ホームページ  >  記事  >  バックエンド開発  >  PHP の DB クラスのメンバー メソッドを静的メソッドとして使用できるのはなぜですか?アドバイスをお探しですか?

PHP の DB クラスのメンバー メソッドを静的メソッドとして使用できるのはなぜですか?アドバイスをお探しですか?

WBOY
WBOYオリジナル
2016-06-23 14:02:02946ブラウズ

php クラス オブジェクト

これは DB クラスである db.php ファイルです
class DB{    function &object()    {        static $db;        if (empty($db))        {            $db = new pgsql();        }        return $db;    }    function query($sql, $transaction = false)    {        $db = & DB::object();                return $db->query($sql, $transaction);    }}


私が聞きたいのは、DB クラスのメソッドが静的ではないのに、なぜそれらが次のような外部 PHP ファイルで使用できるのかということですDB ::query() がこのように使用され、DB::object() が内部的にこのように使用されるのはなぜでしょうか。このように使われるのは静的メソッドではないでしょうか? ?

アドバイスをお願いします! !前もって感謝します!

ディスカッションへの返信(解決策)

これはphp4のコードです
php4にはそれほど多くの制約はありません

これはphp4のコードです
php4にはあまり多くの制約はありません

これはphp4のコードです
php4 にはそれほど多くの制約がありません

これは php4 のコードです
php4 にはあまり多くの制約がありません

私の PHP 環境は 5.2 以降です。PHP4 コードもサポートしていますか? ?

php5 は条件付きで php4 を受け入れることができます

php 5.2 は基本的に php4 と同じですが、オブジェクトが常に参照によって渡される点が異なります。つまり、宣言を使用する必要はありません。
php 5.3 E_STRICT レベルのエラー チェックをオンにすると、非静的メソッドを静的方法で使用することはできません
PHP 5.4 では、デフォルトで E_STRICT レベルのエラー チェックが有効になっており、非静的メソッドを静的方法で使用することはできません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。