我想知道,这是一个“不健康的”使用工厂模式,或者如果它是完全合理的:'不健康'使用工厂模式?
<?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课程的'纯粹'。也许我在想太多。
我的用法来自有许多类,使数据库交易。在所有的例子中,我看到用户名/密码/主机/ etc在每次使用时都被重写了,这看起来并不像OOP那样。
值得一提的是,我真的更喜欢使用Singleton,这让我觉得这是一个绝好的机会(只需要一个连接就可以提高性能,但据我了解),但我是试图避免诱惑,因为我听说他们被认为是OOP癌症。
也许问题是我不应该在这么多地方使用mysqli类,并且可能会使用静态'do query'函数或类似的类来使用类。关于这个问题的所有想法都很受欢迎
你说得对,这是对一个简单问题的过度渴望......我主要试图巩固我的OOP原则。 我不在寻找PDO类型的解决方案(我没有用于访问抽象),所以如果我的代码给出了这样的印象,我很抱歉。 大部分我正在寻找的是一种“模板化”我的访问类型的方法......而不必在整个地方重新写入用户名/密码。我注意到mysqli能够将'默认'数据存储在INI文件中。这不是一个巨大的安全问题吗? – 1owk3y