0

以下のようにコンポーネントを書きました。

class GoogleApiComponent extends Component {
    function __construct($approval_prompt) {
        $this->client = new apiClient();
        $this->client->setApprovalPrompt(Configure::read('approvalPrompt'));
    }
}

これを AppController の $components 変数で呼び出しています。次に、以下のように UsersController を記述しました。

class UsersController extends AppController {
    public function oauth_call_back() {

    }
}

したがって、oauth_call_back アクションでは、GoogleApiComponent のオブジェクトを作成し、パラメーターを使用してコンストラクターを呼び出したいと考えています。CakePHP 2.1 でそれを行うには?

4

1 に答える 1

3

Configure::read() 値を設定プロパティとして渡すか、コンポーネントの initialize() メソッド内にコンストラクタ ロジックを配置できます。

class MyComponent extends Component
{
    private $client;

    public function __construct (ComponentCollection $collection, $settings = array())
    {
        parent::__construct($collection, $settings);
        $this->client = new apiClient();
        $this->client->setApprovalPrompt ($settings['approval']);
    }
}

次に、UsersController に次のように記述します。

public $components = array (
    'My'    => array (
        'approval' => Configure::read('approvalPrompt');
    )
);

または、コンポーネントを次のように書くこともできます。

class MyComponent extends Component
{
    private $client;

    public function __construct (ComponentCollection $collection, $settings = array())
    {
        parent::__construct($collection, $settings);
        $this->client = new apiClient();
    }

    public function initialize()
    {
        $this->client->setApprovalPrompt (Configure::read('approvalPrompt'));
    }
}

CORE/lib/Controller/Component.php 内にある Component クラスを確認することをお勧めします。ソース コードを読むと、その内容に驚かれることでしょう。

于 2012-08-06T13:49:26.797 に答える