Yasigani-ni Blog

日常やプログラム、コーディングなどのことを色々と・・・

CakePHP コントローラーのメソッドを『private』や『protected』にする方法

time 2011/10/01

スポンサーリンク

CakePHPでコントローラーのメソッドを『private』宣言や『protected』宣言したい場合は、メソッド名の前に『_(アンダーバー)』をつけることで実現できます。
(『private』や『protected』については、「PHP publicとかprivateとかの修飾子」参照。)

『private』なメソッドを作成したい場合は『__(アンダーバー2個)』
『protected』なメソッドの場合は、『_(アンダーバー1個)』をメソッド名の前につけます。
こうする事で、自動的に『private』や『protected』メソッドとなります。

▼『private』『protected』メソッドの作成例

class TestsController extends Appcontroller {
    // これはpublic宣言になる
    function publicTest() {
    }

    // これはprivate宣言になる
    function __privateTest() {
    }

    // これはprotected宣言になる
    function _protectedTest() {
    }
}

また、『private』や『protected』なメソッドには、アクションとしてアクセスできないようになります。

例えば、上記の例なら『http://ドメイン名/tests/__privateTest』としてアクセスしようとした場合、『Debug Level』が『1』以上なら『privateメソッドなのでアクセスできないよ!!』みたいなエラーページが表示。

『Debug Level』が『0』なら『そんなアクションはないよ!!』なエラーページが表示されます。

ちなみに、以下のようにしても『private』や『protected』なメソッドは作成できますが、『Debug Level』が『1』以上の場合『privateメソッドなのでアクセスできないよ!!』エラーページは表示されず、『アクションがみつからないよ!!』みたいなエラーページが表示されます。

(CakePHPは「設定よりも規約」なので、『private』メソッドは『__』。『protected』メソッドには『_』をつけるべきだと思います。)

▼『_』をつけない場合

class TestsController extends Appcontroller {
    // これはpublic宣言になる
    public function publicTest() {
    }

    // これはprivate宣言になる
    private function privateTest() {
    }

    // これはprotected宣言になる
    protected function protectedTest() {
    }
}

『private』も『__』も書いた場合は、『privateメソッドなのでアクセスできないよ!!』エラーだったので、両方書いても問題ないのかな??
情報おまちしております・・・

スポンサーリンク

低料金でテストサーバーを作るなら

ドメインを取得するなら



スポンサーリンク

Category