Jump to content

Модели

В приложении MVC модель отвечает за взаимодействие с данными и передачу их контроллеру. То же самое и в Invision Community.

Вообще говоря, экземпляр модели относится к предмету. Например, если бы у вас были форумы и темы, Форум был бы модель, как и Тема. Модель для каждого из них предоставляет методы, позволяющие взаимодействовать с ними. При разработке моделей для вашего приложения перечислите, с чем работает ваше приложение, - это, скорее всего, и будут ваши модели.

Название и местоположение

Название модели всегда должно быть существительным в единственном числе; то есть модель всегда относится к одной вещи. Названия моделей так же должны быть в формате PascalCase. 

Модели расположены в директории /sources вашего приложения. Как обсуждалось в документе Автозагрузка классов, в этой директории должны быть подпапку с таким же названием, как и ваша модель, а сама модель должна находится в данной поддиректории (вместе с любыми поддерживающими модулями).

  • /sources/topic/topic.php - некорректно: директория/модель в нижнем регистре.
  • /sources/Topics/Topics.php - некорректно: множественное имя модели
  • /sources/Topic/Topic.php - Корректно

Еще раз обращаясь к руководству по автозагрузке, имя класса в файле PHP должно иметь префикс с подчеркиванием. Например, если ваш файл был назван Topic.php, класс модели, который он содержит, должен называться _Topic.

Базовые модели

Существует несколько базовых моделей, которые часто будут расширять ваши модели. Каждый из них будет рассмотрен более подробно - включая полный обзор методов, которые они предоставляют - в соответствующих разделах в этой документации. Базовыми являются:

  • \IPS\Node\Model - Методы для работы с нодами, древовидная структура, применимая для категорий (и многое другое).
  • \IPS\Content\Item - Методы для работы с элементами контента, например, темы, изображения галереи.
  • \IPS\Content\Comment - Методы для работы с комментариями (включая сообщения форумов).
  • \IPS\Content\Review - Методы для работы с отзывами.

Эти четыре базовые модели реализуют паттерн Active Record в Invision Community. 

Пример: /exampleApp/sources/Counter/Counter.php

Очень простая автономная модель, которая предоставляет метод для хранения и увеличения числа.

<?php

namespace IPS\exampleApp;

class _Counter
{
	protected $counter = 0;

	public function incrementCounter ()
	{
		$this->counter++;
	}
}

/exampleApp/modules/front/example/index.php

Контроллер, который создает экземпляр вышеуказанной модели, затем вызывает метод incrementCounter, который он предоставляет.

namespace IPS\exampleApp\modules\front\example;

class _index extends \IPS\Dispatcher\Controller
{
	public function manage()
	{
		$myCounter = new \IPS\exampleApp\Counter();
		$myCounter->incrementCounter();		
	}
}

 




Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy