Я использую PHP и разбираюсь, у меня был этот вопрос в течение длительного времени в моем сознании, думая, что я разрешу это сам, но я не мог найти для этого хорошего ответа.PHP OOP & MVC хорошая практика
Например, этот сценарий:
Я подклассы разбора таблицы в модели, так это выглядит следующим образом:
Класс здания
class Building extends ParseObject {
public static $parseClassName = "Building";
public static function getCityBuildings($city = null) {
$query = new ParseQuery("Building");
if($city){
$query->equalTo("city", $city);
}
$myBuildings = $query->find();
if(empty($myBuildings)){
return new Building();
}else{
return $myBuildings;
}
}
public static function removeBuilding($objectId){
$query = new ParseQuery("Building");
$Building = $query->get($objectId);
$Building->destroy();
}
}
Теперь давайте скажем я PHP-страницу, которая нуждается чтобы показать мои здания, но поскольку мы не хотим, чтобы пользователь перезагружал страницу каждый раз, когда он менял город, мне нужно использовать AJAX на странице PHP после того, как он изменит выпадающий список.
index.php
//getting some default values.
$myBuildings: Building::getMyBuildings();
<hmtl combobox with default buildings>
<html combobox with cities>
// Imagine some code in where i can AJAX to a php page and change the combobox based on the changed city combobox. passing the chosen city value.
Что я должен сделать, чтобы подключиться через AJAX:
- Go непосредственно в моей модели класса добавить некоторые проверки на POST методы и вызывать функции. (can not right)
- Создайте страницу контроллера php, которая вызывает функции класса модели и возвращает результат на страницу. (это используется только для запросов этой страницы и т. д.).
- Создайте класс, который обрабатывает все соединения с моделью.
Или, есть ли другой способ сделать это?
Модель представляет собой слой, безумный от множества разных классов, а не от одного класса. Контроллеры отвечают только за изменение состояния модели. Они не собираются (или не должны) собирать данные из модельного слоя. –
Этот класс горит глазами. :) Открытое свойство и ключевое слово 'new' в методе. Требуется некоторая инъекция зависимостей. Во всяком случае, я согласен с людьми, которые рекомендуют рамки. Поскольку Lavavel состоит из основных компонентов Symfony, я предлагаю изучить Symfony с самого начала. – keyboardSmasher
@ tereško hmm Как вы собираете данные? – MichaelAngelo