例如这样的记录:property3->property2->property1
对我来说是理解的,这意味着class的属性是另一个类的对象,例如:
class a {
public $property1 = "some";
}
class b {
function __construct () {
$this->property2 = new a();
}
}
$obj = new b();
echo $obj->property2->property1;
这理解了。但我无法理解这样的记录:method1()->method2()->method3()
您可以发布使用这些记录的简单示例吗?
答案 0 :(得分:4)
这意味着这些函数返回对象。例如,以下是可能的(假设$ pdo是有效的PDO对象):
$result = $pdo->query("SELECT * FROM `table`")->fetchAll();
这可能并不总是有利的,因为你:
失去检查错误的能力,并且您指望的方法可以返回您认为的错误。
在此示例中,您只能以array
的形式获取结果集,但无法访问PDOStatement
返回的PDO::query()
。在这种情况下,它可能并不重要,在某些情况下它可能。
此外,PDO::query()
可能会在出现错误的情况下返回 BOOLEAN false
,这会导致无法解释的“方法fetchAll()
在非对象“错误。
答案 1 :(得分:4)
一个简单的例子:
class A {
function fooA() {
echo "a...";
return $this;
}
function fooB() {
echo "b...";
return $this;
}
function fooC() {
echo "c...";
}
}
$a = new A();
$a->fooA()->fooB()->fooC();
或者有几个班级:
class A
{
private $b;
public function __construct()
{
$this->b = new B();
}
public function fooA()
{
echo "A...";
return $this->b;
}
}
class B
{
public function fooB()
{
echo "B...";
}
}
$a = new A();
$a->fooA()->fooB();