3.6.2.2 Acessando classes do MVC de dentro dos componentes

Para ter acesso a instância do controlador dentro do seu novo componente, você precisa implementar o método startup(). Este é um método especial que trás a referência do controlador como primeiro parâmetro e esta função é chamada automaticamente depois da função beforeFilter() do controlador. Se por alguma razão você não quer que o método startup() seja executado quando o controlador é instanciado, defina o valor da variável $disableStartup para true.

Se você deseja inserir uma lógica antes que o controlador seja chamado, use o método initialize() no seu componente.

<?php

class MathComponent extends Object {
    //chamado antes de Controller:beforeFilter()
    function initialize() {

    }

    //chamado depois de Controller::beforeFilter()
    function startup(&$controller) {

    }

    function doComplexOperation($amount1, $amount2) {
        return $amount1 + $amount2;
    }
}

?>
  1. <?php
  2. class MathComponent extends Object {
  3. //chamado antes de Controller:beforeFilter()
  4. function initialize() {
  5. }
  6. //chamado depois de Controller::beforeFilter()
  7. function startup(&$controller) {
  8. }
  9. function doComplexOperation($amount1, $amount2) {
  10. return $amount1 + $amount2;
  11. }
  12. }
  13. ?>

Você pode também querer utilizar outros componentes dentro de um componente personalizado. Para isso, basta criar a variável $components na classe (assim como você faria em um controlador) como um array que contenha os nomes dos componentes que você deseja utilizar.