ホームページ > バックエンド開発 > PHPチュートリアル > PHP クラス内の外部変数 (データベース オブジェクトなど) に適切にアクセスするにはどうすればよいですか?

PHP クラス内の外部変数 (データベース オブジェクトなど) に適切にアクセスするにはどうすればよいですか?

DDD
リリース: 2024-12-07 03:08:14
オリジナル
987 人が閲覧しました

How to Properly Access External Variables (like a Database Object) within a PHP Class?

クラスでのグローバル変数の使用

外部変数を利用するページネーション クラスを作成しようとしています。ただし、「非オブジェクトでメンバー関数 query() を呼び出します。」というエラーが発生します。

この問題は、外部変数 $db がクラス内で直接アクセスできないために発生します。これを解決するために、2 つの主なアプローチを検討します。

アプローチ 1: 依存関係の注入

依存関係の注入には、データベース オブジェクトを引数としてクラスのコンストラクターに渡すことが含まれます。このメソッドにより、クラスが必要な依存関係に確実にアクセスできるようになります。

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);
    }
}
ログイン後にコピー

アプローチ 2: メソッドの挿入

あるいは、データベース オブジェクトを引数として渡すこともできます。それを必要とする特定のメソッドに移動します。このアプローチは、少数のメソッドのみが依存関係にアクセスする必要がある場合に適しています。

class Paginator
{
    public function get_records($q, DB_MySQL $db)
    {
        $x = $db->query($q);
        return $db->fetch($x);
    }
}
ログイン後にコピー

これらのアプローチのどちらを選択するかは、特定の要件によって異なります。複数のメソッドに依存関係が必要な場合は依存関係の挿入が推奨されますが、メソッド インジェクションは依存関係の使用が限定されている場合に適しています。

以上がPHP クラス内の外部変数 (データベース オブジェクトなど) に適切にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート