ホームページ > バックエンド開発 > PHPチュートリアル > 非静的関数に直接アクセスできるのはなぜですか?

非静的関数に直接アクセスできるのはなぜですか?

WBOY
リリース: 2016-06-20 12:26:28
オリジナル
932 人が閲覧しました

今日 Discuz のコードを見ると、次のコードがありました:

class DB{	function table($table) {		return DB::_execute('table_name', $table);	}	function _execute($cmd , $arg1 = '', $arg2 = '') {		static $db;		if(empty($db)) $db = & DB::object();		$res = $db->$cmd($arg1, $arg2);		return $res;	}}
ログイン後にコピー


理解できないのは、_execute メソッドが静的メソッドではないということです。なぜ直接実行できるのでしょうか。 DB::_execute を使用しますか?
私が自分で書いたクラスでは、クラス名::メソッド名を通して直接アクセスする前にメソッドを静的に設定する必要があります?
アドバイスをお願いします、ありがとうございます。


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

エラー検出のレベルが違うだけです

class T {  function foo($s) {    echo $s, PHP_EOL;  }}T::foo(123);error_reporting(E_ALL ^ E_STRICT);T::foo('abc');
ログイン後にコピー

そのような DB クラスはありません
sourceclassclass_core.php の最後の行のみ
class DB extends discuz_database {}

お使いのバージョンがわかりません

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