Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 11 Февраль, 2012, 06:53:30

Страниц: 1 [2]
Печать
Автор Тема: Не бросать искл. при class_exists (spl_autoload_call)  (Прочитано 697 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Абырвалг    ↓ 
16 Июнь, 2010, 04:44:48
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 79
Сообщений: 5827
Сила слова: 1.36

да, не кошерно. Есть что-то типа такого
 
PHP
if (class_exists($storage) || class_exists($storage = 'BL_Sessions_StorageAdapter_' . $storage))
  /// ...
если ловить исключение - то нужно разбивать на кусочки..
 
лана, забейте, не такая уж это и проблема
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
master    ↓ 
16 Июнь, 2010, 05:02:37 , спустя 17 минут 49 секунд
НЕ ХУЕТА! ХУЕТА!

Сколько квадратов ты видишь?
Группа: Джедаи

Карма: 43
Сообщений: 1866
Сила слова: 2.3

При class_exists автолоад нужен, но эксепшен не нужен.
для чего это?
Записан

Абырвалг    ↓ 
16 Июнь, 2010, 05:15:21 , спустя 12 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 79
Сообщений: 5827
Сила слова: 1.36

ну это как бы адаптеры всяческие, тот же storage для сессий
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
phpdude    ↓ 
17 Июнь, 2010, 05:01:49 , спустя 11 часов 46 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: 19718
Сила слова: 1.72

Абырвалг, адаптеры через екзист цепляешь? оО
 
не лучше ли Library::registerAdapter($adapter = "name" | Object)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Абырвалг    ↓ 
17 Июнь, 2010, 10:22:11 , спустя 5 часов 20 минут 22 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 79
Сообщений: 5827
Сила слова: 1.36

не цепляю а проверяю их наличие
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Абырвалг    ↓ 
02 Сентябрь, 2010, 12:59:43 , спустя 77 дней 2 часа 37 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 79
Сообщений: 5827
Сила слова: 1.36

как-то так
PHP

    /**
     *
     * @param string $class
     * @param string $file
     * @return boolean
     */

    protected function loadClass($class, $file)
    {
        if (file_exists($file)) {
            require $file;
        } elseif ($this->doesAutoloadCalled()) {
            throw new Loader_Exception(sprintf('Missing file "%s" for class "%s"', $file, $class));
        } else {
            return false; // (class|interface)_exists called
        }
 
        if (!class_exists($class, false) && !interface_exists($class, false)) {
            if ($this->doesAutoloadCalled()) {
                throw new Loader_Exception(sprintf('Missing class "%s" in file "%s"', $class, $file));
            } else {
                return false; // (class|interface)_exists called
            }
        }
 
        return true;
    }
 
    protected function doesAutoloadCalled()
    {
         return !count(array_filter(debug_backtrace(), function($line) {
                return in_array($line['function'], array('class_exists', 'interface_exists'));
            }));
    }
 

оверхед не будет большой, так как мы проверяем бектрейс только если файла или класса в этом файле нету, а такое не так уж и часто происходит
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Страниц: 1 [2]
Печать
 

Перейти в: