Методы класса PHP каскадные - PullRequest
0 голосов
/ 26 июня 2010

Я видел много php-скриптов, в которых вы можете каскадно использовать метод класса для создания определенной функциональности, например, как в codeigniter, когда вы загружаете представление, которое вы вводите

<?php
class Posts extends Controller
    {
        function index() {
            $this->load->view("BlaBla");
        }
    }
?>

Я не совсем уверен, что это каскадные методы или что, но у меня нет достаточного опыта, чтобы взломать ядро ​​codeigniter и выяснить самМожет кто-нибудь сказать мне, как это сделать, или направить меня к какому-то учебнику или около того

1 Ответ

2 голосов
/ 26 июня 2010

Каждый метод должен возвращать свой экземпляр класса, например:

class A{
  function B(){
    //do stuff
    return $this;
  }
  function C(){
    //do stuff
    return $this;
  }
  function D(){
    return $this->B()->C()->B()->B()->C();
  }
}

, или вы можете создать свой собственный класс cahining, чтобы связать что-либо:

class Ch{  
  static private $i; 
    public static function i($arg){
    if  (!self::$i instanceof self){
      self::$i = new self();
    }
    self::$i->data=$arg;
        return self::$i;
    }  
  function __call($name,$args){
    array_unshift($args,$this->data);
    $this->data=call_user_func_array($name,$args);
    return $this;
  }
  function get(){
    return $this->data;
  }
}


echo Ch::i('Hello world')->trim('Hld')->str_repeat(5)->substr(5,7)->strtoupper()->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...