Отображение домашнего контроллера в качестве контроллера по умолчанию в AltoRouter

Это index.php

<?php
include 'library/altorouter.php';

$router = new AltoRouter();
$router->setBasePath('/AltoRouter');

$router->map('GET','/', 'home_controller#index', 'home');
$router->map('GET','/content/[:parent]/?[:child]?', 'content_controller#display_item', 'content');

$match = $router->match();

// not sure if code after this comment  is the best way to handle matched routes
list( $controller, $action ) = explode( '#', $match['target'] );

if ( is_callable(array($controller, $action)) ) {

$obj = new $controller();

var_dump($obj);

call_user_func_array(array($obj,$action), array($match['params']));

} else if ($match['target']==''){
echo 'Error: no route was matched';

} else {
echo 'Error: can not call '.$controller.'#'.$action;

}

// content_controller class file is autoloaded

class home_controller {
public function index() {
echo 'hi from home';
}
}

и это работает хорошо. Предполагается, что класс home_controller является контроллером по умолчанию.

Проблема в том, когда я удаляю класс home_controller

class home_controller {
public function index() {
echo 'hi from home';
}
}

и сохранить его как отдельный файл home_controller.php в Приложение / контроллер Директрой это не работает.

Я понимаю, что маршрутизатор не может найти класс home_controller, поэтому не будет показывать его содержимое (если я напрямую включу файл home_controller.php, он снова будет работать как обычно).

Мой вопрос, как вы сопоставляете home_controller по умолчанию, который находится в другом каталоге?

2

Решение

Похоже, вы не используете композитор для установки пакета. Это стандартный способ в PHP.

1. Установите Composer

2. Вызовите Composer из командной строки

Перейдите в корневой каталог вашего проекта, откройте командную строку и введите:

composer require altorouter/altorouter

Вы найдете название пакета altorouter/altorouter в composer.json на странице пакета Github — Вот.

3. Добавить загруженные файлы в ваш index.php

Теперь вы установили пакет маршрутизатора. Следующим шагом является добавление всех загруженных композитором файлов в ваше приложение. Просто замени include 'library/altorouter.php'; со следующим:

<?php

# index.php

require_once __DIR__ . '/vendor/autoload.php';

4. Загрузите свои контроллеры также по Composer

Последний шаг — это сказать композитору, куда найди свои занятия.

открыто composer.json и добавьте следующий раздел:

{
"autolaod": {
"classmap": ["app"]
}
}

Узнайте больше о classmap вариант в документации.

Обновлять /vendor/autoload.php с этой опцией просто позвоните из командной строки:

 composer dump-autoload

Это должно быть так. Если у вас возникнут проблемы, дайте мне знать, в какой момент.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector