这是一个有趣的简单演示:
<?php
class ChainMe {
public function hello() {
echo 'Hello ';
return $this;
}
public function good($is = false) {
if ($is === true) {
echo 'beautiful ';
}
return $this;
}
public function day() {
echo "world!\n\n";
return $this;
}
}
$happy = new ChainMe();
$happy
->hello()
->good(true)
->day();
$meh = new ChainMe();
$meh->hello()->good()->day();
?>
http://codepad.org/zlQEMPqK
如果你对 jQuery 很熟悉并且曾经见过类似的东西:
jQuery('#my .awesome[selector]')
.fadeToggle('fast')
.addClass('rocks')
.fadeToggle();
然后你就体验了链接。例如,查看jQuery
源中变量的定义:
// Define a local copy of jQuery
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
还有jQuery.extend
, jQuery.fn
/jQuery.fn.init
$
和window._$
. _ 您会看到它的许多成员方法返回this
(或返回另一个方法,该方法又返回this
)。反过来有。当 jQuery 首次亮相时,那是许多“Javascript”开发人员第一次看到这种模式。需要一些时间来适应。:)
在 jQuery 中,在许多情况下,它应该为方法链提供良好的性能提升(例如,在时间很重要的动画队列中)。我不知道PHP中是否是这种情况,但这完全有可能。我更多的是在浏览器中而不是在服务器上,所以我在 PHP 中没有看到太多。但关键是,这是一个需要掌握的权力概念。