我有一個關於PHP類的簡單問題。簡單的PHP類有關方法的問題
多次我見過其他類框架等使用類似的方法調用。
$post->data->text();
我喜歡這個功能,而不僅僅是做這樣的事情。
$post->dataReturnAsText();
但我不太確定他們是如何創建這個功能,可能有一個'子方法'?希望有人能指出我在正確的方向....
我有一個關於PHP類的簡單問題。簡單的PHP類有關方法的問題
多次我見過其他類框架等使用類似的方法調用。
$post->data->text();
我喜歡這個功能,而不僅僅是做這樣的事情。
$post->dataReturnAsText();
但我不太確定他們是如何創建這個功能,可能有一個'子方法'?希望有人能指出我在正確的方向....
您提供的例子有沒有什麼特別的:
<?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();
在這種情況下,數據僅僅是類的屬性,它包含另一個對象:
class data
{
public function text()
{
}
}
class thing
{
public $data;
}
$thing = new thing();
$thing->data = new data();
$thing->data->text();
它可能是一個公正的「數據」是包含一個對象問心無愧例如文本屬性$後的AA公共財產:
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方式是使財產私人,並允許訪問使用吸氣功能,但除了點...