Codeigniter написать цепочку функций - PullRequest
2 голосов
/ 19 октября 2011

Могу ли я написать цепные функции в CodeIgniter?

Так что, если у меня есть такие функции:

<code>function generate_error(){
    return $data['result']      =   array('code'=> '0',
                                      'message'=> 'error brother');
}

function display_error(){
      $a= '<pre>';
      $a.= print_r($data);
      $a.= '
';вернуть $ a;}

Я хочу вызвать их, связав их цепочкой:

echo $this->generate_error()->display_error();

Причина, по которой я хочу разделить эти функции, заключается в том, что display_error () полезен только для разработки, поэтому когдадело доходит до производства, я могу просто удалить display_error () или что-то в этом роде.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Чтобы написать цепочечные функции, они должны быть частью класса, из функции вы затем возвращаете ссылку на текущий класс (обычно $this). Если вы вернете что-либо, кроме ссылки на класс, произойдет сбой.

Также возможно вернуть ссылку на другой класс (например, когда вы используете функцию класса активных записей воспламенителя кода get(), она возвращает ссылку на класс DBresult)

class example {

  private $first = 0;
  private $second = 0;

  public function first($first = null){
    $this->first = $first;
    return $this;
  }

  public function second($second = null){
    $this->second = $second;
    return $this;
  }

  public function add(){
    return $this->first + $this->second;
  }
}

$example = new example();

//echo's 15
echo $example->first(5)->second(10)->add();

//will FAIL
echo $example->first(5)->add()->second(10);
0 голосов
/ 20 октября 2011

вы должны вернуть $this в вашу функцию, чтобы сделать цепочку функций в php oop


public function example()
{ 
 // your function content
 return $this;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...