У меня есть группа маршрутов с 6 маршрутами внутри нее. Я проверяю параметры каждого маршрута по базе данных.
Каков наилучший способ добиться этого? Построить класс для него?
У меня есть группа маршрутов с 6 маршрутами внутри нее. Я проверяю параметры каждого маршрута по базе данных.
Каков наилучший способ добиться этого? Построить класс для него?
При работе с базой данных это действительно зависит от того, как часто вы будете ее использовать. Slim не имеет интеграции с базой данных, поэтому вы можете получить доступ к базе данных либо с помощью базового php, либо с помощью инструмента ORM, который поможет вам общаться с вашей базой данных.
Одной из быстрых и простых в использовании форм является idiorm http://idiorm.readthedocs.org/en/latest/index.html
Есть и другие более надежные вещи, и все зависит от того, чего вы пытаетесь достичь. На самом деле, чтобы предложить «лучшее» решение, нам потребуется больше информации о ситуации, а также о том, как можно количественно определить «лучшее».
Попробуйте использовать тонкое промежуточное ПО.
Добавьте свою контрольную часть в качестве одного промежуточного программного обеспечения и поделитесь промежуточным программным обеспечением для всех маршрутов. Тогда вы будете счастливы.
В зависимости от ваших потребностей вы также можете попробовать использовать экземпляры класса в качестве обратных вызовов маршрута.
Определите базовый класс со всеми функциями базы данных и используйте «контроллеры классов», доступные начиная с версии 2.4. .0 (ноябрь 2013 г.).
class Base {
// Define all your shared DB methods and properties here
}
Используйте дочерние классы вашего базового класса в качестве экземпляров класса контроллера, в качестве обратных вызовов для маршрутов ваших приложений Slim (и их параметров):
$app->get('/user/:id/', '\Base\User:find');
Получить экземпляр $app в экземпляре класса обратного вызова достаточно просто:
class User extends \Base {
public function find($theUserId) {
// ...
// You can easily get access to $app here, too:
// $app = \Slim\Slim::getInstance();
}
}