これを理解するのに問題があります。古い MySQL 関数コード PDO の書き直しを開始したいと思います。それが設定された方法は、この行を含む外部ファイルです(とりわけ):
// db.php file
$DB = new dbConnect(SERVER,DB,USER,PASSWORD,3306);
function my_autoloader($class)
{
require_once ($_SERVER['DOCUMENT_ROOT']."/includes/".'class.' . $class . '.php' );
}
spl_autoload_register('my_autoloader');
これにより、データベースへの接続が作成されます。これは私のページの一番上に含まれており、すべてのクラスもロードします。ここで、PDO を使用して新しい接続を作成する場合は、次のようにします。
$conn = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',USER, PASSWORD);
ただし、このコード行を別のファイルに配置して、次のようなクラス内から PDO を呼び出すことはできません。
require_once 'db.php';
class info
{
protected $ID;
public function __construct($id)
{
$this->ID = $id; //
}
public function getName()
{
$query = "SELECT * FROM job";
$q = $conn->query($query);
$data = $q->fetch(PDO::FETCH_ASSOC);
//do something with $data
}
}
これは、次のような集約によってコンストラクターで接続を確立する必要があるということですか?
require_once 'db.php';
class info
{
protected $ID;
protected $pdo;
public function __construct($id)
{
$this->ID = $id; //
$this->pdo = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',USER, PASSWORD);
}
public function getName()
{
$query = "SELECT * FROM job";
$q = $this->pdo->query($query);
$data = $q->fetch(PDO::FETCH_ASSOC);
// do something
}
}
または、私が気付いていないこれを行う別の方法があります。これを組み込むためにすべてのクラスを書き直そうとするのは面倒です。