我有一个关于PHP类的简单问题。
我多次见过其他类框架等使用方法调用。
$post->data->text();
我喜欢这个功能,而不仅仅是做这样的事情。
$post->dataReturnAsText();
但是我不太确定他们是如何创建这个功能的,或许有一个'子方法'?希望有人能指出我正确的方向......
答案 0 :(得分:2)
您提供的示例没有什么特别之处:
<?php
class Post{
public $data;
}
class Data{
public function text(){
}
}
$post = new Post;
$post->data = new Data;
$post->data->text();
但是,您可能已经在方法链接的上下文中找到它(在JavaScript库中非常流行):
<?php
class Foo{
public function doThis(){
return $this;
}
public function doThat(){
return $this;
}
}
$foo = new Foo;
$foo->doThis()->doThat()->doThis();
答案 1 :(得分:0)
在这种情况下,数据只是类的一个属性,它包含另一个对象:
class data
{
public function text()
{
}
}
class thing
{
public $data;
}
$thing = new thing();
$thing->data = new data();
$thing->data->text();
答案 2 :(得分:0)
它可能仅仅是“数据”是包含具有文本属性的对象的$ post的公共属性,例如:
class Textable {
public $text;
function __construct($intext) {
$this->text = $intext;
}
}
class Post {
public $data;
function __construct() {
$data = new Textable("jabberwocky");
}
}
这将允许你这样做:
$post = new Post();
echo( $post->data->text ); // print out "jabberwocky"
当然正确的OOP方式是使属性私有并允许访问使用getter函数,但除此之外......