-3

バックエンド コントローラーと、バックエンド コントローラーを拡張する他のコントローラーがあり、バックエンド コントローラーで変数を設定し、それを拡張するコントローラーで使用する方法を見つけようとしています。

バックエンドコントローラーの構成値である変数を設定すると、サブコントローラーはどのようにアクセスできますか。

編集:

http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

アプリケーションでドライなアプローチを維持するフィル スタージョンの基本クラスを使用しています。コントローラーを以下に示します。ログイン コントローラーをロードすると 500 エラーが発生しますが、アプリケーションに含まれている CI コントローラーのウェルカムをロードすると、ロードされるだけです。大丈夫。

ログイン コントローラにアクセスすると 500 エラーが発生するのはなぜですか。

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   

    }
}

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Backend_Controller extends MY_Controller 
{

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   

    }
}

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends Backend_Controller {

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   

    }
}
4

1 に答える 1

1

バックエンド コントローラー (親) に public または protected の可視性を持つインスタンス変数がある場合、バックエンド コントローラーを拡張するコントローラーは、$thisキーワードを使用してこれらの変数にアクセスできます。

例:

<?php
class ParentController {
    protected $foo = "bar";
}

class ChildController extends ParentController {
    public function indexAction() {
        echo $this->foo;
    }
}
于 2013-01-08T20:38:10.647 に答える