ホームページ >データベース >mysql チュートリアル >依存関係の注入を使用して「非オブジェクトのメンバー関数 query() の呼び出し」エラーを回避する方法
ページネーション機能を構築するときに、「非オブジェクトのメンバー関数 query() を呼び出します。」というエラーが発生する場合があります。これは多くの場合、クラス外で宣言された変数にクラス自体の内部からアクセスすることに起因します。 より良い解決策を探ってみましょう。
依存性注入はクリーンなソリューションを提供します。 グローバル変数に依存する代わりに、必要なオブジェクト (データベース接続など) をクラスに直接渡します。 これはコンストラクターを通じて行われます:
<code class="language-php">$db = new DB_MySQL("localhost", "root", "", "test"); // Database connection include_once("pagi.php"); $pagination = new Paginator($db); $records = $pagination->get_records("SELECT the, fields, you, want, to retrieve FROM `table`"); class Paginator { protected $db; public function __construct(DB_MySQL $db) { $this->db = $db; } public function get_records($q) { $x = $this->db->query($q); return $this->db->fetch($x); } }</code>
あるいは、データベース オブジェクトを、それを必要とするメソッドに直接挿入することもできます。
<code class="language-php">$db = new DB_MySQL("localhost", "root", "", "test"); // Database connection include_once("pagi.php"); $pagination = new Paginator(); $records = $pagination->get_records("SELECT the, fields, you, want, to retrieve FROM `table`", $db); class Paginator { public function get_records($q, DB_MySQL $db) { $x = $db->query($q); return $db->fetch($x); } }</code>
依存性注入には、グローバル変数を使用する場合に比べて大きな利点があります。
要約すると、依存関係の注入は、依存関係と共有リソースを管理し、よりクリーンで、より堅牢で、テスト可能なコードを促進するためのベスト プラクティスです。 このアプローチを採用することで、グローバル変数の落とし穴を回避します。
以上が依存関係の注入を使用して「非オブジェクトのメンバー関数 query() の呼び出し」エラーを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。