1

私は、保護されたキーワードを使用している場合でも、変数の前にアンダースコアを使用していることを見てきました。

class Administration extends Backend_Controller {

    protected $_mdl = 'model_comments';

    function __construct()
    {
         parent::__construct();
         $mdl = $this->_mdl;
         $this->load->model($mdl);
    }

    ...

}

protected変数の前に使用する場合、アンダースコアは必要ですか?

$_mdlただの代わりに mdl like: の前にアンダースコアを使用する利点は何$mdlですか?

私はこの「セキュリティ」の問題があまり得意ではないので、説明をいただければ幸いです。

4

4 に答える 4

7

これは命名規則です。プロパティの範囲を示すために使用されます。保護されているか公開されているか。アンダースコアを見ると、クラス プロパティにアクセスする方法がわかります。

コンストラクターメソッドなどの魔法のメソッドで__がどのように使用されるかのようなものです(ただし、実際にはそうではありません)。

PHP は、この規則に従うかどうかは気にしません。コードの解釈方法には影響しません。

他の言語では、 Hungarian Notationなども表示されます。

最後に、実際のセキュリティへの影響はありません。コードの読みやすさがすべてです。

于 2013-05-14T20:06:11.663 に答える
3

$aそれは と の間と同じ違いです$abc

于 2013-05-14T20:08:17.547 に答える
3

アンダースコアは必要ありません。変数がクラスのプライベート変数であることを視覚的に示すために、主に php4 で使用されていました (パブリック以外の可視性機能がなかったため)。

可視性に関するPHPマニュアルは次のとおりです

http://us.php.net/manual/en/language.oop5.visibility.php

于 2013-05-14T20:13:07.107 に答える