Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.02.2015, 15:52
|
|||
|---|---|---|---|
PHP, авторегистрация классов |
|||
|
#18+
Подскажите, как правильно делать? У меня есть такая файловая структура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. header.php — общий для всех точек входа код, в котором инициализируются константы, подключаются общие библиотеки и функции и т.п. В подкаталоге lib/auto размещаются классы, которые должны подключаться автоматически. Называются они по шаблону NameClass.php. Некоторые классы могут быть распределены по нескольким файлам, эти файлы будут размещаться в подкаталоге с именем NameClass. Но для простых классов таких подкаталогов не будет. В подкаталоге lib/base размещаются классы, которые подключаются вручную. Как это сделать? В помощью spl_autoload_register? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 16:23
|
|||
|---|---|---|---|
PHP, авторегистрация классов |
|||
|
#18+
PSR-0 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 16:31
|
|||
|---|---|---|---|
|
|||
PHP, авторегистрация классов |
|||
|
#18+
Alibek B., function __autoload($classname) { $filename = "class/". $classname .".php"; include_once($filename); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 16:52
|
|||
|---|---|---|---|
PHP, авторегистрация классов |
|||
|
#18+
ScareCrowPSR-0 ? Я про него и не знал. Нет, у меня немного другая структура файлов. Написал такой код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Но он почему-то не работает, в логах ошибка "PHP Fatal error: Class 'Test' not found in header.php on line 108". Хотя имя класса определяется верно, в $file правильный полный путь к php-файлу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 16:55
|
|||
|---|---|---|---|
PHP, авторегистрация классов |
|||
|
#18+
Разобрался. В самом файле TestClass.php у меня было написано "class TestClass". Поправил описание класса, все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 17:05
|
|||
|---|---|---|---|
PHP, авторегистрация классов |
|||
|
#18+
Хотя нет, вопросы остались. Можно ли сделать так, чтобы работали оба способа создания экземпляра класса (new Test и new auto\Test)? Сейчас класс у меня выглядит так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. При этом new auto\Test работает, new Test не работает. Если из класса убрать namespace auto, тогда получается наоборот, new Test работает, а new auto\Test не работает. Такое: Код: php 1. не работает, альяс не может быть пустым. Можно ли сделать так, чтобы можно было использовать оба варианта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 17:35
|
|||
|---|---|---|---|
|
|||
PHP, авторегистрация классов |
|||
|
#18+
Alibek B.Хотя нет, вопросы остались. Можно ли сделать так, чтобы работали оба способа создания экземпляра класса (new Test и new auto\Test)? Сейчас класс у меня выглядит так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. При этом new auto\Test работает, new Test не работает. Если из класса убрать namespace auto, тогда получается наоборот, new Test работает, а new auto\Test не работает. Такое: Код: php 1. не работает, альяс не может быть пустым. Можно ли сделать так, чтобы можно было использовать оба варианта? а зачем вам тогда namespace. Если вы создаете объект в том же файле, то можно new Test(); если в другом, то use auto\Test. Вместо echo "Test::__construct() \n"; лучше echo __CLASS__ -сразу видно имя класса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&mobile=1&tid=1461974]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 401ms |

| 0 / 0 |
