Каков наилучший способ аккуратно структурировать сайты PHP без использования фреймворка? - PullRequest
3 голосов
/ 10 августа 2010

Я работаю на PHP сайте среднего размера. Я пишу классы "провайдера" для моих объектов. По сути, если у меня есть объект «пользователь», у меня есть класс «пользователь-провайдер», который может запрашивать / сохранять пользователей в базе данных, принимая и возвращая объекты пользователя. Я просто включаю провайдеров и зависимые объекты в нужные мне файлы.

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

Ответы [ 4 ]

3 голосов
/ 10 августа 2010

Во-первых, в использовании фреймворка нет ничего плохого, если только он не вводит ненужные сложности и / или потери производительности для небольших приложений. В PHP фреймворки Symfony и Laravel довольно хороши в этом отношении.

Сказав это, если вы действительно не хотите «чужой» фреймворк, вы все равно в конечном итоге напишите свой собственный. Так что лучше планировать это. Просто возьмите ваш любимый фреймворк и структурируйте свой проект точно так же, как если бы вы использовали этот фреймворк . Затем напишите самоклеящийся код (т. Е. Свой собственный мини-фреймворк). Если вы заметите, что ваш проект растет больше, чем ожидалось, у вас не будет особых проблем с переходом на «реальный» фреймворк.

Однако, если вы действительно не хотите использовать что-то похожее на фреймворк, потому что ваше приложение очень маленькое, просто поместите все в один файл. В этом файле вы, конечно, должны четко разделять презентацию, CSS, логику приложения и т. Д.! Но в минимальном приложении нет необходимости разбираться с несколькими файлами.

1 голос
/ 11 августа 2010

Следующая рекомендация вызвала консенсус у многих опытных разработчиков PHP:

  • myproject/
    • application/
      • configs/
        • ...
      • controllers/
        • ...
      • views/
        • ...
      • models/
        • ...
      • ...
    • library/
      • PEAR/
      • Zend/
      • ...
    • public/ & larr; корень документа
      • index.php
      • library/
        • editarea/
        • jquery/
        • OpenLayers/
        • ...
      • media/
        • ...
      • styles/
        • default.css
        • ...
      • ...

Хотя эта структура изначально была придумана в среде Zend, она рекомендуется для любого проекта, независимо от того, какую платформу он использует или использует ли он вообще.

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

Некоторые важные замечания об этой структуре:

  • Корень документа - это прямая подпапка с именем public/, которая является принятым стандартом не только в PHP, но также в Python, Ruby и т. Д.
  • Имена папок технологически нейтральны. (library/ вместо js/, styles/ вместо css/)
  • Эта структура все еще нуждается в некотором обсуждении. Например, было бы лучше, если бы каталоги были названы все в единственном или множественном числе, а не как library и styles. Кроме того, можно утверждать, что MVC не всегда рекомендуется или его не следует называть так, поэтому лучше использовать более общее имя папки, например templates/, а не views/.
0 голосов
/ 10 августа 2010

Модель просмотра контроллера также приятно иметь. http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

0 голосов
/ 10 августа 2010

Это хорошая отправная точка: http://www.phpguru.org/static/ApplicationStructure

$_PATHS["base"]      = dirname(dirname(__FILE__)) . "/";
$_PATHS["includes"]  = $_PATHS["base"] . "includes/";
$_PATHS["templates"] = $_PATHS["base"] . "templates/";
$_PATHS["pear"]      = $_PATHS["base"] . "pear/";
$_PATHS["logs"]      = $_PATHS["base"] . "logs/";

Но в основном то, что вы в конечном итоге ... это рамки:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...