autoload ['helper'] = массив ('url');Как я могу загрузить URL-помощник таким образом, как codeigniter - PullRequest
1 голос
/ 17 декабря 2011

В настоящее время я хочу построить инфраструктуру MVC. Все идет хорошо, но теперь я хочу добавить еще одну функцию (классы автозагрузки, такие как codeigniter). Например, в моем autoload.php у меня есть:

$autoload['helpers'] = array('url');

Как я могу загрузить класс url этим?

Ответы [ 4 ]

1 голос
/ 03 мая 2013

Я нашел ответ здесь . но вот несколько примеров:

$autoload['libraries'] = array('database','ion_auth');
$autoload['helper'] = array('url');
1 голос
/ 17 декабря 2011

Довольно похудел, но концепция была бы что-то вроде ниже.Вы можете посмотреть на способы автозагрузки CI в файле /system/core/Loader.php.

foreach($autoload['helpers'] as $helper)
{
    include_once($your_base_path . $path_to_helpers . $helper . '.php');
}
0 голосов
/ 17 декабря 2011

Вы могли бы легко сделать это так же, как это делает codeigniter, создав массив, выполняя итерацию по массиву и используя стандартный класс загрузки, как здесь php.net . так как это ваш собственный MVC-фреймворк, который вы пытаетесь создать, вы можете добавить в качестве расширения к фреймворку Zend :: autoloader. я предполагаю, что у вас будет файл конфигурации, и в нем вы можете определить свою библиотеку, например, если вы используете Pear или любые другие расширенные библиотеки, вы можете просто извлечь все классы Zend и просто продолжить работу с ним. когда я использую codeigniter, я обычно добавляю Zend как расширение, чтобы сделать фреймворк более надежным и не изобретать велосипед.

вот ссылка для включения zend с codeigniter , она довольно старая и, возможно, потребуется внести некоторые изменения, чтобы соответствовать текущей версии codeigniter.

Надеюсь, это поможет.

0 голосов
/ 17 декабря 2011

С точки зрения помощников, пример Аарона великолепен, но если вам нужны дополнительные классы, вы, вероятно, тоже захотите создать их экземпляры:

$autoload = array();
$autoload['libraries'] = array('url');

foreach($autoload as $set)
{
    foreach($set as $class)
    {
        if(file_exists($set.'/'.$class.'.php'))
        {
            require_once($set.'/'.$class.'.php');
            $this->$class = new $class;
        }
    }
}
...