Мне было интересно, является ли это «вредным» использованием заводского паттерна, или это вполне разумно:
<?php //ConnectionFactory.class.php
/**
* Generates prepared mysqli connection instances
*/
class ConnectionFactory {
public static function make(){
$c = new mysqli('localhost', 'testusername', 'fakepassword');
if ($c->connect_error) throw new ConnectionException("Connection failed");
return $c;
}
}
class ConnectionException extends Exception {}
?>
Или более подходящим было бы расширение класса mysqli с предварительно заполненными аргументами? Я думал об этом, но мне казалось, что это нарушает «чистоту» класса mysqli. Может быть, я слишком много думаю об этом.
Я использую много классов, которые выполняют транзакции с базой данных. Во всех примерах, которые я видел, имя пользователя / пароль / хост / и т. Д. Переписывалось при каждом использовании, что тоже не похоже на ООП.
Стоит отметить, что я действительно предпочел бы использовать Singleton, и это кажется мне идеальной возможностью для этого (когда-либо требуется только одно соединение, что, как я понимаю, значительно повысит производительность), но я пытаюсь чтобы избежать соблазна, потому что я слышал, что они считаются ООП рак.
Возможно, проблема в том, что мне не следует использовать класс mysqli во многих местах, и, возможно, я использую класс со статическими функциями 'do query' или чем-то подобным. Все мысли на эту тему очень ценятся