PHP对象链式操作实现原理分析_php技巧_脚本之家

从上述代码可以看见,当调用对象中不设有的法辰时,会自行触发__call(State of Qatar魔术点子,然后结合call_user_func(State of Qatar来进行链式操作,当输出对象的时候触发toString(卡塔尔(قطر‎来输出想要的结果.当然还也会有二个方案便是在自定义的方法中动用return
this,也得以达成目的链式的操作,大家能够和睦去尝试看.

希望本文所述对我们PHP程序设计有所帮助。

$.addClass;
$str = 'abs123 ';echo $str->trim;

如何是链式操作呢?使用jQuery的同校印象应该会很深切.在jQuery中,我们平常会这么的来操作DOM成分:

下边代码的魔法正是去除字符串两侧的空格,然后输出其长度,那么使用链式编制程序就足以如此来:

是或不是望着进一层的喜悦啊?这里根本是选拔了PHP面向对象里面包车型客车 __call
魔术点子

在PHP中,大家平日要运用过多函数:

贯穿操作看起来实在相当帅,也特别的谋福代码的阅读.那么在PHP里面是或不是能够达成啊?答案是迟早的,当然了必得是在OOP中用才行,在进度化的次第中,就不曾必要用这种措施了。

正文实例叙述了PHP对象链式操作完成原理。分享给我们供我们参谋,具体如下:

/*** 对象链式操作* 2015-04-24*/class BaseChainObject{ /*** 追溯数据,用来进行调试* @var array*/private $_trace_data = array(); /** * 保存可用方法列表 * @param array */ protected $_methods = array(); /** * 处理的数据 * @param null */ public $data; function __construct{ $this->data = $data; $this->_trace_data['__construct'] = $data; return $this->data; } function __toString$this->data; } function __call{ try{ $this->vaild_func; }catch{ echo $e->getMessage; } if  { $args = $this->data; $this->data = call_user_func; }else{ $this->data = call_user_func_array; } $this->_trace_data[$name] = $this->data; return $this; } /** * 判断方法是否存在 * @param string */ private function vaild_func{ if(!in_array){ throw new Exception; } } public function trace(){ var_dump; }}class String extends BaseChainObject{ protected $_methods = array;}$str = new String;echo $str->trim;$str->trace();

更加的多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法计算》、《PHP互连网编制程序才具总括》、《PHP数组操作技巧大全》、《php字符串用法总计》、《php+mysql数据库操作入门教程》及《php不以为奇数据库操作技巧汇总》

$str = 'abs123 ';echo strlen;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图