10900


例えば以下のようにいくつかの関数に渡って同じコードを記述する場合、ひとつにまとめてスッキリさせる方法はないのでしょうか？  
詳しい方、ご教示ください。よろしくお願いいたします。

[code]

    <?php
    App::uses('AppController', 'Controller');
    App::uses('Sanitize', 'Utility');
    
    class SampleController extends AppController {
    
        public $components = array('Session');
        public $uses = array('Sample', 'User');
    
        public function index() {
    
            $this -> autoLayout = false;
    
    　　　　　/*以下のコードが同じ*/
    
            if($this->Session->check('my_id')){
    
            $get_session = $this->Session->read('my_id');
    
                $this->set('get_session_id',$get_session);
    
            } else{
    
                $this->set('get_session_id',false);
            }
    
        }
    
        public function a() {
    
            $this -> autoLayout = false;
    
            if($this->Session->check('my_id')){
    
            $get_session = $this->Session->read('my_id');
    
                $this->set('get_session_id',$get_session);
    
            } else{
    
                $this->set('get_session_id',false);
            }
    
        }
    
        public function b() {
    
            $this -> autoLayout = false;
            if($this->Session->check('my_id')){
    
            $get_session = $this->Session->read('my_id');
    
                $this->set('get_session_id',$get_session);
    
            } else{
    
                $this->set('get_session_id',false);
            }
    
        }
    
        public function c() {
    
            $this -> autoLayout = false;
    
            if($this->Session->check('my_id')){
    
            $get_session = $this->Session->read('my_id');
    
                $this->set('get_session_id',$get_session);
    
            } else{
    
                $this->set('get_session_id',false);
            }
    
        }
    }
    
[/code]


CC BY-SA 3.0
2015-06-02T10:17:02.777
10899
2015-06-02T11:01:22.690
2015-06-02T10:43:42.120
5750
8619
question
php cakephp
cakephp 同じコードをまとめる


該当箇所を別のメソッドに分離すればよいです。

[code]

    class SampleController extends AppController {
    
        public function index() {
    
            $this->autoLayout = false;
    
            $this->someFunction();
        }
    
        private function someFunction()
        {
            if($this->Session->check('my_id')){
    
            $get_session = $this->Session->read('my_id');
    
                $this->set('get_session_id',$get_session);
    
            } else{
    
                $this->set('get_session_id',false);
            }
        }
    }
    
[/code]

もし複数のコントローラーで共通化したい場合は`AppController`に定義してください。

## AppController.php

[code]

    class AppController extends Controller
    {
        protected function someFunction()
        {
        }
    }
    
[/code]


CC BY-SA 3.0
2015-06-02T10:48:00.190
10900
2015-06-02T11:01:22.690
2020-06-17T08:14:45.997
-1
5750
10899
answer