Статик или обьект- как правильнее?

363
10 декабря 2016, 11:11

Вот задался таким вопросом, где и как лучше использовать статик методы?.. Читал про них, но так и не понял где лучше использовать их, в каких ситуациях..

На пример, есть класс для работы с базой, и у класса есть метод query

$db = new Db();
$db->query($sql);

Если здесь использовать не объект класса, а статистический метод сделать, как лучше?

По удобству мне лучше статик использовать, но как правильно использовать, и не хуже ли будет...?

Db::query($sql);
Answer 1

Ваш пример с DB неполный поэтому вы и засомневались. Ключевой момент здесь это то, откуда вы будете брать параметры подключения к базе. Если они у вас зашиты в класс это неверно. Если они вынесены в кофиг это лучше, и логика обращения к конфигу и получения параметров внутри вашего класса Db есть, но нужно подумать о ситуации когда у вас будет несколько подключений, тогда либо передавать идентификатор подключения по которому будут получатся параметры из конфига. Но это делает ваш класс зависимым от этого конфига.

Db::connect('mainDb')->query($sql)->fetchAll();

И третий вариант это когда вы в конструктор передаёте параметры подключения, но нужно подумать как потом пробрасывать этот экземпляр во все модули остальные, чтоб из них можно было достучатся до базы. Не использовать же $db как global переменную. Можно конечно создать некий $application который будет хранить все компоненты и передавать его во все модули. Но мне такой подход не нравится. Лично я использовал статику для верхнего уровня, а у неё уже компоненты в виде экземпляров. Нравится то как это сделано в Yii2 через пайпинг

Yii::$app->db->query($sql)->fetchAll();
READ ALSO
PHP для Android

PHP для Android

Всем привет! Я хотел попробовать собрать php56 под андроид

311
Верхний отступ в HTML [закрыто]

Верхний отступ в HTML [закрыто]

не могу понять откда тут верхний отступПодскажите пожалуйста

292
Angular 2 unused Class

Angular 2 unused Class

Разбираю примеры на сайте документации https://angulario/docs/ts/latest/guide/user-input

281
Можно ли использовать html теги в БД?

Можно ли использовать html теги в БД?

Есть база данныхМне нужно использовать символы: b, i, u, h2 и "пробел"

499