これは工場出荷時のパターンの「不健全」使用である場合、私は思っていた、またはそれは完全に合理的である場合:工場パターンの 'Unwholesome' use?
<?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クラスの「純度」に違反しているように感じました。たぶん私はあまりにも多くのことを考えています。
私の使用法は、データベーストランザクションを行う多くのクラスを持つことに由来します。すべての例で私はusername/password/host/etcがそれぞれの使用法に書き直されているのを見てきましたが、これは非常にOOPのようには見えません。
私はシングルトンを使うのが本当に好きですが、これは私にはそのような絶好の機会です(私が理解しているようにパフォーマンスが大幅に向上する接続が必要です)。彼らはOOPがんとみなされていると聞き、誘惑を避けようとしています。
おそらく問題は、私は非常に多くの場所でmysqliクラスを使用すべきではなく、静的な 'do query'関数などのクラスを使用するべきであるということです。被験者のすべての考えが大きく訴えられます
あなたはそうです、これは簡単な問題のために考え過ぎています...私は主に私のOOPの原則を固めようとしています。 PDOタイプのソリューションを探しているわけではありません(私はまだアクセス抽象化に使用していません)。 私が探しているのは、私のアクセスタイプを「テンプレート化」する方法です...ユーザー名/パスワードをあちこちに書き直す必要はありません。私はmysqliがINIファイルに 'デフォルト'のデータを格納できることに気付きました。それは巨大なセキュリティ問題ではありませんか? – 1owk3y