2016-03-15 3 views
0

Я хочу отделить код обработки данных от контроллера, выполнив сервис.PHP Service: Singleton или Static

Я спрашиваю себя, если это лучше сделать что-то вроде Service::getInstance()->function() (Singleton) или просто Service::function() (Static)

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

Но в моем случае служба будет использовать что-то вроде Article::find($id). Итак, мой вопрос: нужно ли сделать синглтон, если этот синглтон использует статический метод? Я думаю, что в этом случае тестируемость ничего не изменит. Это правильно? Я хочу сделать это правильно, поэтому мне нужна ваша помощь.

спасибо большое :)

ответ

0

Почему вы не можете использовать экземпляр объекта? Таким образом, вы можете вводить необходимые зависимости:

$articleObject = new Article($databaseForExample); 
$article = $articleObject->find($id); 
+0

Я использую пользовательскую структуру, которая действительно похожа на Laravel. Таким образом, поиск объекта осуществляется таким образом, но я просто хочу правильно отделить мой код проверки от контроллера. –

+0

Я сам не знаком с Laravel. В общем случае вы должны использовать одиночные элементы для объектов, которые вы хотите инициализировать один раз, например, службу базы данных или кеша. Для всех других классов просто создайте новый экземпляр, если вам нужна такая функциональность. Нет причин использовать статический метод для поиска/получения сообщения. – Arno