2013-06-21 2 views
1

Я создаю свою собственную модель mvc, поэтому мне нужно включить все мои модели и класс контроллеров.включают файлы в mvc model php

На данный момент каждый раз, когда мне нужна модель в контроллере я использую:

require_once('myModel.php'); 

Немного как импорт в Java

Но у меня есть вопрос, это хорошее решение, чтобы продолжить сюда ? Я бы предпочел включить все мои модели и контроллеры в начале кода, но я боюсь, что это решение слишком тяжелое.

Благодаря

+0

Почему бы вам не использовать рамки MVC, такие как cakephp, codeignator, Laravel. И почему вы хотите включить всю модель без необходимости. –

+0

@AmarBanerjee, вы на самом деле посмотрели, как реализованы автозагрузчики, упомянутые вами фреймворки? [Торт] (https://github.com/cakephp/cakephp/blob/master/lib/Cake/Core/App.php#L534), [CI] (https://github.com/EllisLab/CodeIgniter/blob /develop/system/core/Loader.php) и [Laravel] (https://github.com/laravel/framework/blob/master/src/Illuminate/Support/ClassLoader.php). Даже менее оскорбительное (laravel) - это всего лишь куча статических функций, завернутых в пространство имен (это просто похоже на класс). Это ужасные фрагменты кода. Вы не должны рекомендовать их новичкам. –

ответ

3

В общем, я бы не рекомендовал вам создавать свои собственные фреймворки, но если вы настаиваете или хотите сделать это для учебных целей, сообщество PHP создало FIG (Framework Interop Group), чтобы поддерживать согласованность между фреймворками и как обрабатывать вещи ,

Проблема, которую вы пытаетесь решить, называется автозагрузкой, она также документирована как стандарт AS PSR-0, https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md, хорошо прочитайте.

А вот PSR-0 совместимый примеры автозагрузчика: PHP - most lightweight psr-0 compliant autoloader

В основном это означает, что ваш путь namescape покажет, где искать файл.

Например, вы хотите получить BussinessObject в bootstrap.php:

//MVC/Models/BussinessObject.php 

namespace MVC/Models; 

class BussinessObject { 

} 

//MVC/bootstrap.php 

namespace MVC; 

use MVC/Models/BussinessObject; 

$BussinessObject = new BussinessObject() 

Тогда автозагрузчик будет искать файл в MVC/модели/BussinessObject.php и вызовы требуют использования этого пути.

+0

Спасибо за ваш ответ, я попробовал Symfony2, но мне это не нравится, я, может быть, испытаю zend, у вас есть рамочный sugestion? – Ajouve

+0

Это зависит от ваших потребностей, Хотите что-то маленькое для микро-каркаса, такого как Silex. Я вполне доволен Symphony, я бы постарался, чтобы Laravel 4 выглядел как хорошая фреймворк, Zend 2 также лучше по сравнению с 1, но изучение требует времени. –

+0

спасибо за ваш ответ – Ajouve

0

Лучший подход должен включать файлы только тогда, когда они действительно необходимы. Поскольку это не часто бывает практичным, попробуйте включить в приложение init только файлы, содержащие основные функции, которые вы используете.