![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
так.. Я совсем запутался в этих рассуждениях. Можно чуть ближе к "земле"?
допустим, у меня есть ядро. где-то там я делаю функция
а вызов происходит примерно так
Т.е. при появлении new произойдёт вызов функции __autoload в которую передастся переменная ClassName(). Ну и соответственно в самой функции подключается файл _PATH . $class_name . '.php' Так? я так понимаю, что основной спор возникает при условии что если кто-то в одном из подключаемых модулей пожелает также сделать свою такую же функцию? Так? И ещё, что будет если в коде будут встречаться отдельно ? include_once _PATH . $class_name . '.php'; -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Так.
Так. Для того, чтобы иметь таки возможность вставить в свой модуль свой автолод php.net рекомендует использовать spl_autoload_register - более гибкий аналог .
Ничего плохого. Если инклуд встетился ДО использования класса - автолод не будет вызван для загрузки этого класса, причем, если класс и не пригодится для работы приложения - он все равно окажется описан. Если после - еще раз тикнет процедура проверки include_once. Просто с автолодом можно вообще НИГДЕ не использовать инклуды. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
тогда дальше.. Из мануала я так толком и не понял как воспользоваться spl_autoload_register и как он вообще функционирует.. Поясните на простом примере.
и Второе, если встретится два spl_autoload_register что произойдёт и какой будет исполнен? или такого не может (не должно) быть? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Нужно написать функцию, которая выглядит и работает как __autoloaad, но называется по другому. и вызвать spl_autoload_register с параметром - именем этой функции.
Все функции, зарегистрированные таким образом будут вызываться по порядку, пока объект, который нужно получить, не подключится. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| Gold Dragon |
|
||||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
то есть так?
а подключать так?
или как-то по другому?
Это сообщение отредактировал(а) Gold Dragon - 21.1.2012, 11:42 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||||
|
|||||||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
http://ru.php.net/manual/ru/function.spl-a...ad-register.php
там дофига примеров. Что конкретно не понятно? http://ru.php.net/manual/ru/function.spl-a...ister.php#95456 Вот наиболее простой пример, а все остальные рассказывают чем этот способ лучше простого автолода -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
ksnk, напиши пожалуйста пример на основе моего (самый верхний пост на этой странице ;) никак не могу ухватить суть с этими параметрами...
Это сообщение отредактировал(а) Gold Dragon - 21.1.2012, 14:00 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
а вызов происходит примерно так
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
ВСЁ!!! теперь понял
Ну я примерно так и думал, что нужно через spl_autoload_register инициализировать функцию которая будет обрабатывать подключение. А дальше при new всё будет происходить автоматом тогда ещё один вопрос. Что будет при:
Добавлено через 2 минуты и 17 секунд и ещё. Из мануала пример, но не смог правильно перевести с инглиш
Что произойдёт и что будет вызиваться? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
выведет.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
а про ещё один вопрос
раньше я где-то подключал файл и потом где угодно использовал :: А сейчас это автоматом подключится или мне в любом случае хоть раз но нужно сделать
? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
да, работает
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
ksnk, огромное спасибо за человеческие объяснения ;)
В общем теперь всё понятно что и как. Ну и соответственно понятно что лучше использовать в своих проектах -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Gold Dragon, интересная статьтя http://habrahabr.ru/blogs/php/136761/
-------------------- Amazing |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
MoLeX, спасибо. отличная статья для понимая ;)
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |