Форум → Программирование → PHP для идиотов → PHP и ООП → __autoload
__autoload
Страницы: ← Следующая страница →
-
я хочу что все классы располагались по пакетам (каждый пакет это папка),так вот метод PEAR меня не устраивает. теперь к делу autoload ,будеть "прочёсывать" папки где могут находится классы и заносить в массив( array(class_name=>path)),который в последствии кэшируется, далее просто проверяю наличие класса и пути, разумеется + include_path. Т.к. это операция долговременная, то при следующим запуске проверяю кэш… для рабочей машины кэш можно установить 30 мин, для продакшен вообще делать это по cron'y или например раз в сутки…
что вы об этом думаете? -
-
Июль 24, 2007, 12:05 д.п., спустя 25 минут 52 секунды
сделать __autoload!
классы хранятся так :
/lib
/Acl
/src
*.class.php
/ActiveRecords
/src
*.class.php
/Cache
/src
*.class.php
/DataBase
/src
*.class.php
и т.д.
-
Июль 24, 2007, 12:21 д.п., спустя 16 минут 2 секунды
не понимаю.
есть задача подгрузить все доступные классы сразу?
имхо класс должен подгружаться по мере надобности -
Июль 24, 2007, 12:25 д.п., спустя 3 минуты 13 секунд
не понимаю.
есть задача подгрузить все доступные классы сразу?
не все а только те которые, функцией http://lv.php.net/autoload -
Июль 24, 2007, 12:30 д.п., спустя 5 минут 16 секунд
честно - вообще ничего не понимаю(
основная идея использования этой функции - подгружение классов по мере надобности.
ты их хочешь подгружать сразу? тогда зачем вообще аутолоад понадобился? -
Июль 24, 2007, 12:33 д.п., спустя 3 минуты 12 секунд
сразу хочу создать только кэш (массив), а уже потом подгружать
честно - вообще ничего не понимаю(
основная идея использования этой функции - подгружение классов по мере надобности.
ты их хочешь подгружать сразу? тогда зачем вообще аутолоад понадобился? -
Июль 24, 2007, 12:37 д.п., спустя 3 минуты 52 секунды
не, считаю что подгужение должно происходить так:
1. понадобился класс.
2. проверили небыл ли он уже подгружен. если нет то
3. обратились к дире в которой лежит этот класс, проверили наличие конкретного файла, подгрузили класс.
если файл лежит где-то там и называется как-то так то это не дело.
если все происходит так, не понимаю зачем кеш -
Июль 24, 2007, 12:56 д.п., спустя 18 минут 33 секунды
Алгоритм примерно такой, но как системе узнать в какой директории находится класс? сгружать их в одну директорию не хочу т.к. будет слишком много путаницы…зачем кеш
Кэш - банальный индексатор, для упрощения поиска файлов… -
Июль 24, 2007, 1:02 д.п., спустя 6 минут 44 секунды
зачем все в одну? модно хранить систиматезировано.
то что ты хочешь сделать больше напоминает какой-нибудь конфиг - стратический и редактируемый вручную файл.
или у тебя классы сами-по-себе добавляются и исчезают? -
Июль 24, 2007, 1:16 д.п., спустя 13 минут 45 секунд
то что ты хочешь сделать больше напоминает какой-нибудь конфиг - стратический и редактируемый вручную файл.
Примерно так оно и естьили у тебя классы сами-по-себе добавляются и исчезают?
Возможно да новые версии пакетов будут обновлятся по крону через SVN или через PEAR(что больше вероятность), но пока это только в задумках, что касается реалий то:
1. Не хочется писать этот конфиг
2. Намного проще всё автоматизировать
3. Вполне реально можно забыть прописать класс в "конфиг", но добавив его…
4. Хотелось бы сделать стандартное решение загрузки файлов не завищищие от путей где находится файл с классом -
Июль 24, 2007, 1:21 д.п., спустя 5 минут 17 секунд
смотри сам тогда по своей исходной задаче, которая немного шире чем "сделать автозагрузку".
можно автоматизировать, если не боишься глюков. мне больше ручное редактирование нравится, но опять-таки от задач зависит -
Июль 24, 2007, 1:26 д.п., спустя 5 минут 7 секунд
и тогда лог результата таких апдейтов вести надо обязательно -
Июль 24, 2007, 1:32 д.п., спустя 5 минут 6 секунд
и тогда лог результата таких апдейтов вести надо обязательно
это понятно.
Забыл еще про
5. помимо папки src, будет еще и test.
ЗЫ Если использовать PEAR то при update'ах можно вообще использовать консольный индексатор. -
Июль 24, 2007, 11:02 д.п., спустя 9 часов 30 минут 7 секунд
Patrick, уверен, что file_exists() по всем доступным папкам будет работать неприемлимо долго?
Может быть искать класс этим методом и кешировать результат для каждого класса, а не устраивать периодически полную индексацию?
По имени класса невозможно определить пакет, которому он принадлежит?
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!