【问题标题】:PHP class methods cascadingPHP类方法级联
【发布时间】:2010-06-26 16:48:09
【问题描述】:

我见过许多 php 脚本,您可以在其中级联类方法以生成特定功能,例如在加载要键入的视图时在 codeigniter 中

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

我不完全确定这些是级联方法还是什么,但我没有足够的经验来破解 codeigniter 核心并弄清楚自己。
任何人都可以告诉我如何做到这一点或指导我一些教程左右

【问题讨论】:

标签: php class methods


【解决方案1】:

每个方法都必须返回其类实例,例如:

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();

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多