Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Автозагрузка классов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
QDef
Отправлено: 10 Декабря, 2011 - 21:51:09
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Дек. 2010  


Помог: 1 раз(а)




Подскажите пожалуйста решение или пример автозагрузки классов с разных директорий.
Просто __autoload() не спасает (
 
 Top
Panoptik
Отправлено: 10 Декабря, 2011 - 22:08:20
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




почитайте ветку уроки PHP
это обрывок из урока 19 о паттернах
автор материала EuGen
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. define('APPLICATION_PATH', realpath(dirname(__FILE__)));
  4. define('VIEWS_PATH', realpath(dirname(__FILE__)).'/Web/Views/');
  5.         APPLICATION_PATH . '/Lib' . PATH_SEPARATOR .
  6.         APPLICATION_PATH . '/Web' . PATH_SEPARATOR .
  7.         APPLICATION_PATH . '/Core' . PATH_SEPARATOR .
  8.         './bbcode/' .PATH_SEPARATOR. get_include_path());
  9. function __autoload($className)
  10. {
  11.     $fname = str_replace('_', '/', $className) . '.php';
  12.     $result = include_once($fname);
  13.     return $result;
  14. }
  15. $router = new Router();
  16. $router->run();
  17. ?>
  18.  


-----
Just do it
 
 Top
caballero
Отправлено: 10 Декабря, 2011 - 22:35:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Подскажите пожалуйста решение или пример автозагрузки классов с разных директорий.
Просто __autoload() не спасает (

не спасает от чего? Напиши и зарегистрируй свою функцию авто загрузки или несколько функций. В чем проблемма собственно.
если в том чтобы поставить соответствие имени класса имени файла то namespace - самое удобное решение


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Okula
Отправлено: 12 Декабря, 2011 - 01:22:17
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Вот как решена эта проблемма в шаблонизаторе Twig
PHP:
скопировать код в буфер обмена
  1. /**
  2.  * Autoloads Twig classes.
  3.  *
  4.  * @package twig
  5.  * @author  Fabien Potencier <fabien@symfony.com>
  6.  */
  7. class Twig_Autoloader
  8. {
  9.     /**
  10.      * Registers Twig_Autoloader as an SPL autoloader.
  11.      */
  12.     static public function register()
  13.     {
  14.         ini_set('unserialize_callback_func', 'spl_autoload_call');
  15.         spl_autoload_register(array(new self, 'autoload'));
  16.     }
  17.  
  18.     /**
  19.      * Handles autoloading of classes.
  20.      *
  21.      * @param  string  $class  A class name.
  22.      *
  23.      * @return boolean Returns true if the class has been loaded
  24.      */
  25.     static public function autoload($class)
  26.     {
  27.         /*if (0 !== strpos($class, 'Twig')) {
  28.             return;
  29.         }*/
  30.  
  31.         if (is_file($file = dirname(__FILE__).'/../'.str_replace(array('_', "\0"), array('/', ''), $class).'.php')) {
  32.             require $file;
  33.         }
  34.     }
  35. }

Как должна быть организована архитектура:
Имя класса должно содержать путь до него, например:
Users_Basa
Такой класс должен располагаться в дирректории Users и файл должен иметь имя Basa.php
Ну и так далее, думаю суть понятна Улыбка
 
 Top
caballero
Отправлено: 12 Декабря, 2011 - 02:20:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Как должна быть организована архитектура:
Имя класса должно содержать путь до него, например:
Users_Basa
Такой класс должен располагаться в дирректории Users и файл должен иметь имя Basa.php
Ну и так далее, думаю суть понятна

Выглянь в окно - уже 21 век и PHP5.3 с namespace


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Okula
Отправлено: 12 Декабря, 2011 - 07:51:32
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




caballero, это конечно хорошо что PHP 5.3 есть, но не везде он установлен, вот у меня на хосте стоит 5.2.17 и хостер ни в какую не хочет его менять. Сколько бы я ему не говорил об этом.
 
 Top
caballero
Отправлено: 12 Декабря, 2011 - 09:58:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Долго ли хостера поменять


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB