0

今日、PHPコードを最適化しようとしていますが、PDO接続用にシングルトンファクトリをセットアップしたいと思います。まず、私の現状を説明しましょう。

たくさんの関数を含むfunctions.phpがあり、ほとんどすべてのページの上部にあります

include 'functions.php';

多くの人が自分のウェブサイトで行うように。これらの関数の1つは、次のようなPDO接続です。

function db_connect(){
$host = 'localhost';
$port = 3306; 
$database = 'mybigdb';
$username = 'user11';
$password = 'password1';

$dsn = "mysql:host=$host;port=$port;dbname=$database";

$db = new PDO($dsn, $username, $password);
return $db;
}

データベース接続を必要とする各関数内には、次のようなものがあります。

function fetch_row($param1, $param2, $db=NULL){
if(is_null($db))$db=db_connect();

//Rest of code here

}

そうすれば、データベースオブジェクトを渡すことができますが、含まれていない場合に備えて追加しておく必要があります。上記のコードは正常に機能し、私はしばらくの間それを使用しています。ただし、シングルトンファクトリのクラスについて読んで、おそらくこれが優れていると考えてください。

シングルトンの工場についてこの回答を読みましたが、使い方がよくわかりません。私はクラスの初心者で、学ぼうとしています。いくつか質問があります...

  1. 彼が新しいConnectionFactory(...)を持っている「...」に何を入れますか??
  2. クラスコードをどこにコピーして貼り付けますか?これをfunctions.phpの一番上に配置しますか?
  3. 各関数の最初に何を入れますか?それでも、データベースオブジェクトをパラメータに渡してみる必要がありますか?
  4. この方法も本当に変換する価値がありますか?または私の現在の戦略はOKです。

助けてくれてありがとう:)

4

1 に答える 1

0

このようなシングルトンを作成できます。

class Connection {
  private static $_con = null;
  private function _constructor(){
      // here you instantiate de pdo conection
  }
  public static function GetInstace(){
      if ( self::$_con == null ) 
         self::$_con = new Connection();
      return self::$_con;
  }
}

その後、次のことを行います。$db = Connection::GetInstance();

于 2012-11-27T00:46:23.537 に答える