这是什么PHP语法?

这是什么PHP语法?,php,syntax,frameworks,Php,Syntax,Frameworks,我最近看到一些PHP代码示例如下: $myObj->propertyOne = 'Foo' ->propertyTwo = 'Bar' ->MethodA('blah'); 与之相反: $myObj->propertyOne = 'Foo'; $myObj->propertyTwo = 'Bar'; $myObj->MethodA('blah'); 这是来自某个特定的框架还是某个特定版本的PHP,因为我从未见过它能工作?我不敢相信它

我最近看到一些PHP代码示例如下:

$myObj->propertyOne = 'Foo'
      ->propertyTwo = 'Bar'
      ->MethodA('blah');
与之相反:

$myObj->propertyOne = 'Foo';
$myObj->propertyTwo = 'Bar';
$myObj->MethodA('blah');

这是来自某个特定的框架还是某个特定版本的PHP,因为我从未见过它能工作?

我不敢相信它会像您在每行后面用分号显示的那样工作,也不能直接指定属性;你很可能看到过类似的情况

$myObj->setPropertyOne('Foo')
      ->setPropertyTwo('Bar')
      ->MethodA('blah');
这通常称为fluent接口或方法链接,其中每个方法都通过return$this返回当前对象的实例。您看到的是fluent接口,但是您的代码示例是错误的。长话短说,fluent setter应该返回$this:

用法:

$sth = new TestClass();
$sth->setSomething(1)
    ->setSomethingElse(2);

我已经了解了在PHP中从未听说过的方法链接。显然,我的例子是胡说八道

这篇文章对我来说很有意义:


你确定吗?有语法错误的;你的意思是,没有;偏执狂呢?正如chainingZend框架中的方法一样,它可以处理这个问题。但是比在foo和barAre之后离开半圆形你确定这个语法吗?我猜您看到了一个链接@Daan的方法-ZF是否处理它来直接设置这样的属性?或者它只是通过setter实现的?@MarkBaker直接说,你不需要setter。这真是太好了:
$sth = new TestClass();
$sth->setSomething(1)
    ->setSomethingElse(2);