2013-12-22 3 views
1

Я хочу автоматически включать все мои пользовательские контроллеры и модели (Яркость) с моим приложением, чтобы у меня был доступ к ним из любой части моего приложения.Slim Framework autoinclude ORM Models

Вот почему в моем индексный файл Стройный рамочные У меня есть эти две foreach петли:

// Include all controllers 
    foreach(glob("controllers/*.php") as $controller) 
    { 
    include $controller; 
    } 

    // Include all models 
    //foreach(glob("models/*.php") as $model) 
    //{ 
    // include $model; 
    //} 

Однако это создает проблему, главным образом, второй цикл, когда я включать все модели и ошибки я получаю: C:\..\models\model name.php Cannot re-declare.. Как могу я решить это?

ответ

3

Я бы рекомендовал использовать Composer (http://getcomposer.org) для управления зависимостями вашего приложения. Используйте автозагрузчик, который Composer предоставляет для автоматической загрузки ваших классов, и вам не придется самостоятельно управлять ими, тем самым избегая проблемы полностью.

Для того, чтобы иметь доступ к этим классам в приложении, передать контейнер Laravel на маршрутах с использованием ключевого слова:

$app->get('/', function() use ($app, $container) {}); 

Вы теперь в состоянии получить доступ что-либо в случае $ приложения и что-нибудь из $ container на вашем маршруте.

+2

Хороший момент использования Corposer будет использовать его в следующем проекте. Я решил проблему с include_once вместо include. –

0

Вы пытались использовать require_once вместо include? Что-то вроде этого:

// Include all controllers 
foreach(glob("controllers/*.php") as $controller) 
{ 
    require_once $controller; 
} 

// Include all models 
foreach(glob("models/*.php") as $model) 
{ 
    require_once $model; 
} 

Также проверьте на это имя класса, если у вас есть имя контроллера класса User, а также название модели класса User. Если есть что-то подобное, вы должны переименовать его класс. Вы не можете зарегистрировать класс с таким же именем. Сделайте что-то уникальное и подробное, например UserController (контроллер ресурсов для пользовательского модуля) и UserModel (модель для пользовательского модуля).