Структура папок платформы PHP MVC … я делаю это правильно?

Я в настоящее время работаю самостоятельно Платформа PHP, и я нуждаюсь в некоторой помощи, выясняющей, иду ли я в правильном направлении или нет...

Платформа и для моего собственного использования и обычно совершенствовать мои навыки PHP далее. Я встретился с многочисленными проблемами, что путем преодоления их я изучил много и люблю способность ни из чего создать что-то, таким образом, я не видел бы ответы как "Просто Зенд использования"!;)

Я считал набор статей и на Переполнении стека и на наборе других сайтов, но не могу вполне получить правильный ответ, в котором я нуждаюсь, так надо надеяться, кто-то может дать мне некоторый полезный совет!

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

'Теоретическая' структура платформы

- .htaccess
- index.php
- private/
    - app/
        - bootstrap.php
        - modules/
            - default/
                - controllers/
                    - pages.php
                    - index.php
                - models/
                - views/
            - admin/
                - controllers/
                - models/
                - views/
    - config/
        - config.php
        - autoloader.php
    - lib/
        - Some_Library
            - Class1
                - class1.php
            - Class2
                - class2.php
- public/
    - css
    - images
    - scripts

Подробнее

  • index.php является основным файлом, где каждый запрос направляется к с .htaccess.
  • к частному / нельзя получить доступ публично, очевидно.
  • общественность / содержит все общедоступные файлы.
  • приложение / содержит весь определенный для приложения код.
  • lib / мог содержать Пехлеви или другую библиотеку (я также работаю самостоятельно), чтобы быть названным с автопогрузчиками
  • bootstrap.php является определенным для приложения кодом... Мне нужно это? основной 'index.php' достаточно?.
  • модули / содержали бы каждый модуль... Мне нужны модули вообще?.
  • значение по умолчанию / является модулем по умолчанию, который будет содержать MVC's для большинства запросов (используемый, когда 'администратор' не будет первой частью URL).
  • администратор / является модулем, который будет содержать MVC's для администраторского раздела.

Так или иначе, к моему вопросу...

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

Если запрос site.com/videos/view/1/ прибывает в мой сайт..

Модуль: Контроллер По умолчанию: Действие Видео: Представление Params: массив ('1')

и если запрос site.com/admin/pages/view/1/ прибывает в мой сайт..

Модуль: Администраторский Контроллер: Действие Страниц: Представление Params: массив ('1')

Действительно ли это - правильный способ пойти об этом? Или я сверхусложняю его и делаю что-то, что это не стоит делать?

У меня должна быть платформа абсолютно отдельного приложения для моего администраторского раздела...? Я должен даже разделить администраторский MVC's раздела от остальной части всего этого?

Извините за значительный вопрос, просто требуемый, чтобы дать Вам как можно больше информации! Не стесняйтесь отвечать, какой бы ни часть Вы можете =P

7
задан manbeardpig 14 June 2010 в 19:35
поделиться

2 ответа

Одно из решений для маршрутизации администратора - то, что делает CakePHP, сначала вы определяете конфигурацию для строки администратора а затем в своем контроллере используете действия с определенным преобразованием имен

//Configuration ============================
Configure::write("admin_routing" , true );
Configure::write("admin_prefix"  , "admin" );

//Controller ===============================
class MyController extends AppController{

    function index(){
      //Will map to /mycontroller/
    }


    function admin_index(){
      //Will map to /admin/mycontroller/
    }

}

Вы можете обобщить это, используя систему маршрутизации просто посмотрите, как это делает ваш любимый фреймворк

Еще одно замечание

  1. Папка modules кажется ненужной
  2. Я согласен с antpaw, вы должны добавить папку globals view и model, чтобы разделить их между приложениями
  3. Я не понимаю, почему autoloader находится в каталоге config, а не в каталоге lib, вы также можете просто переместить boostrap.php в каталог config

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

.
2
ответ дан 7 December 2019 в 12:15
поделиться

Я бы посоветовал вам использовать bootstrap.php, который управляет всеми маршрутами, чтобы вы никогда не сталкивались с проблемами типа "я хотел бы вложить на одну папку больше в мой модуль администратора".

Я бы также не использовал модули и держал контроллеры по умолчанию прямо в дире controller/, а контроллеры администратора в дире controller/admin. То же самое для моделей и представлений.

btw это действительно не умно не разделять модели между различными частями вашего приложения, они будут одинаковыми в 99% всех случаев. вот почему mvc настолько мощный. иногда вы даже можете разделить некоторые части представления внутри вашего приложения между front- и back-end.

1
ответ дан 7 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: