Скажем, у вас есть следующее:
/ m / User.class.php /v/newUser.php /c/UserController.class.php
Обычно я разбиваю их на 3Слои: модель в классе, хорошо инкапсулированный класс высокого связности для данного бизнес-объекта.Хотя этот класс отвечает за объектную модель пользователя, контроллер отвечает за реализацию методов CRUD.Это упрощает разделение задач, способствует повторному использованию кода и т. Д. Затем вы можете подключить контроллер к любому представлению, которое вам нужно, например, «newUser.php» для просмотра пользователей.
Поскольку PHP является языком сценариев, вам необходимо импортировать зависимости перед его использованием.Итак, глядя на дерево зависимостей, я обычно импортирую модель в контроллер, используя «require_once», и контроллеры в представление.
User.class.php ----- class User {private $ username;
User($newUsername) {
$this->username = $newUsername;
}
}
userController.php --------------- (учитывая, что направление "приложение" ниже находится под переменной PHP INCLUDE_PATH)
require_once ("app / m / User.class.php");
classUserController {
public static createUser($newUsername) {
return new User($newUsername);
}
}
newUser.php ---------- (Учитывая, что ниже указано «приложение» в переменной PHP INCLUDE_PATH)
require_once("app/c/UserController.class.php");
$newUser = $UserController.createUser("username");
echo "<b>" . $newUser;
В дополнение к этому я использую систему ORM, такую как Propel, чтобы обеспечить постоянство пользователя.Я реализовал большую систему PHP во время обучения в магистратуре с Propel и ручным MVC ... Для более полного примера этой структуры перейдите к http://java.net/projects/infinity-metrics/sources/svn/content/trunk/app/classes/infinitymetrics/controller/UserManagementController.class.php для примера контроллера.Вот пример представления с использованием этого контроллера: http://java.net/projects/infinity-metrics/sources/svn/content/trunk/app/user/student/signup-step1.php.