0

これを拡張する子クラス内の親クラスの __construct プロパティにアクセスしようとしていますが、複数のメソッドを試してみて期待した結果が得られなかったため、これを行う方法がわかりません。

したがって、baseController とそれを拡張する indexController があり、子コントローラー内の親のプロパティに直接アクセスできるようにしたいと考えています。

            $config = ['site' => 'test.com'];

            class baseController {

                public function __construct($config){

                    $this->config = $config;

                }

            }

            class indexController extends baseController {

                public function __construct(){
                    parent::__construct(); // doesnt seem to give any outcome
                }

                public static function index() {

                    var_dump($this->config); // need to access within this method

                }

            }

            $app->route('/',array('indexController','index')); // the route / would call this controller and method to return a response
4

1 に答える 1

0

そこにあるコードにはいくつかの問題があります。構成をグローバルとして設定しています。それはあなたの中にあり、またはBaseControllerに設定する必要があります:publicprotected

class BaseController {
  protected $config = ...

@mhvvzmak1 が述べたように、子コンストラクターは親を適切に呼び出しています。たとえば、次のようにできます。

 class IndexController extends BaseController {

     public function __construct(){
         $config = [];
         parent::__construct($config);
     }

最後に、dan08 が述べたように、静的メソッドから参照することはできず$this、インデックス関数を変更します。

public function index() {

アップデート

フレームワークの要求に応じて子関数を静的のままにしたい場合は、config で静的関数を作成し、BaseControllerそれを子で呼び出します。

class BaseController {

   protected static function config() {
     return ['site' => 'mySite'];
   }
}

class Child extends BaseController {
   public static function index() {
      $config = BaseController::config();
   }
}
于 2016-04-05T22:01:54.653 に答える