Вот задался таким вопросом, где и как лучше использовать статик методы?.. Читал про них, но так и не понял где лучше использовать их, в каких ситуациях..
На пример, есть класс для работы с базой, и у класса есть метод query
$db = new Db();
$db->query($sql);
Если здесь использовать не объект класса, а статистический метод сделать, как лучше?
По удобству мне лучше статик использовать, но как правильно использовать, и не хуже ли будет...?
Db::query($sql);
Ваш пример с DB неполный поэтому вы и засомневались. Ключевой момент здесь это то, откуда вы будете брать параметры подключения к базе. Если они у вас зашиты в класс это неверно. Если они вынесены в кофиг это лучше, и логика обращения к конфигу и получения параметров внутри вашего класса Db есть, но нужно подумать о ситуации когда у вас будет несколько подключений, тогда либо передавать идентификатор подключения по которому будут получатся параметры из конфига. Но это делает ваш класс зависимым от этого конфига.
Db::connect('mainDb')->query($sql)->fetchAll();
И третий вариант это когда вы в конструктор передаёте параметры подключения, но нужно подумать как потом пробрасывать этот экземпляр во все модули остальные, чтоб из них можно было достучатся до базы. Не использовать же $db как global переменную. Можно конечно создать некий $application который будет хранить все компоненты и передавать его во все модули. Но мне такой подход не нравится. Лично я использовал статику для верхнего уровня, а у неё уже компоненты в виде экземпляров. Нравится то как это сделано в Yii2 через пайпинг
Yii::$app->db->query($sql)->fetchAll();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Разбираю примеры на сайте документации https://angulario/docs/ts/latest/guide/user-input
Есть база данныхМне нужно использовать символы: b, i, u, h2 и "пробел"