PHP 関数名がアンダースコアで始まるとはどういう意味ですか?
例えば:__construct()
構造の意味は知っていますが、関数がアンダースコアまたは二重アンダースコアで始まる他の場所を見たことがありますが、その意味がわかりません。
PHP 関数名がアンダースコアで始まるとはどういう意味ですか?
例えば:__construct()
構造の意味は知っていますが、関数がアンダースコアまたは二重アンダースコアで始まる他の場所を見たことがありますが、その意味がわかりません。
PHPでは、2つのアンダースコアで始まる関数には、通常、特別な意味があります。マニュアルから:
PHPは、__で始まるすべての関数名を魔法のように予約します。文書化された魔法の機能が必要な場合を除いて、PHPでは__とともに関数名を使用しないことをお勧めします。
たとえば、__construct()は、オブジェクトの初期化中に自動的に呼び出される特別なメソッドです。
Seも: http: //php.net/manual/en/language.oop5.magic.php
メソッドまたはプロパティが非公開/保護されていることを示すために最初のアンダースコアを 1 つ使用する、一般的な命名 "コーディング スタイル" もあります。かなり普及していると思います。
他の回答で述べたように、二重アンダースコアは「魔法の」メソッドに使用されます。ユーザーがメソッド名に 2 つのアンダースコアを意図的に使用することは決してないため、衝突のリスクはほとんどありません。それが単一のアンダースコアではない理由は、オブジェクト指向の非公開性を強制するために「private」キーワードが登場する前の、悪い(より悪い)昔のプライベートメソッドの一般的な規則であったためだと思います。
codeigniter では、コントローラーでメソッドをアンダースコアで開始すると、ルーターはその URL からのアクセスを許可しないことを認識します。