Автозагрузка классов с namespace (Рейтинг: -2)
Всем привет))
Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее
затем нам нужно сохранить путь к корневой директории в include_path
Для начала создадим в корневой директории проекта папку test и затем этой папке создадим класс Test*
*UPD 03.08.14
Добавил: KpuTuK
29.01.2014 / 02:07Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее
<?php define('DOCROOT', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR); ?>константа DOCROOT будет содержать полный путь к корневой директории.
затем нам нужно сохранить путь к корневой директории в include_path
<?php set_include_path(DOCROOT); ?>далее мы должны вызвать функцию регистрации автоматической загрузки классов
<?php spl_autoload_register(); ?>но так как данный способ поддерживает автозагрузку классов только в нижнем регистре мы зарегистрируем "свою" функцию загрузки:
<?php spl_autoload_register(function ($class) { include_once DOCROOT . str_replace('\\', '/', $class).'.php'; }); ?>Давайте теперь проверим нашу функцию на работоспособность.
Для начала создадим в корневой директории проекта папку test и затем этой папке создадим класс Test*
<?php namespase test; class Test { function __construct() { echo 'Все работает'; } } ?>и теперь попробуем вызвать класс тест
<?php new \test\Test(); ?>и перейдя по адресу vacsh_proect.ru вы должны увидеть
Все работаетВот в принципе и все))
*UPD 03.08.14
все классы должны быть в отдельных файлах, а их ns должен повторять файловую структуру сайта
Рейтинг:
-2
Просмотры: 3724Комментарии (5) »