【发布时间】:2012-06-09 00:11:32
【问题描述】:
此时,假设我有一个这样的课程:
class Sentence {
__construct($content) {
$this->content = $content;
}
public function grab_word($num) {
$words = explode(" ", $this->content);
return $words[$num+1];
}
}
所以给出的接口允许我创建一个new Sentence,然后我可以调用grab_word()类方法来获取句子中的一个单词:
$sentence = new Sentence("Lorem ipsum dolor sit amet");
echo $sentence->grab_word(2);
但是,我想做的是添加另一个链式类方法,让我能够将这个词大写。
$sentence->grab_word(2); # -> ipsum
$sentence->grab_word(2)->caps(); # -> IPSUM
显然,这是行不通的,因为链式方法需要对象继承。如果我要创建 caps() 并链接该函数 - 由于返回不是继承的 Sentence 对象,它将返回错误。
总而言之,我的问题是如何实现可选地链接这些方法,但在需要时仍返回非对象(如在我的输出示例中)。
【问题讨论】:
-
简短:你不能。复杂:您可以制作一个对象来携带当前转换的值,然后实现
__toString()以在需要时将该对象隐式转换为字符串。当然不值得努力。
标签: php oop inheritance chaining