PHP:具有新self()的方法链?
我在一个方法中创建了一个对象,我想在同一类的另一个方法中进一步处理它 我这样尝试过,但是$obj没有传递给方法2(): 有没有办法做到这一点PHP:具有新self()的方法链?,php,oop,methods,chaining,Php,Oop,Methods,Chaining,我在一个方法中创建了一个对象,我想在同一类的另一个方法中进一步处理它 我这样尝试过,但是$obj没有传递给方法2(): 有没有办法做到这一点 我找到了这个线程,但仍然不清楚这是否可能。如果我没有误解您的意图,如果您没有将第二个方法设置为静态,您可以返回一个对象,它将作为$this在链式调用中传递 class SomeClass { public $id = 0; public static function one($id) { $obj = new
我找到了这个线程,但仍然不清楚这是否可能。如果我没有误解您的意图,如果您没有将第二个方法设置为静态,您可以返回一个对象,它将作为$this在链式调用中传递
class SomeClass {
public $id = 0;
public static function one($id)
{
$obj = new self(); // Create and return new object
$obj->id = $id;
return $obj;
}
public function two()
{
$this->id = 3; // The new object is $this here
return $this;
}
}
$obj = SomeClass::one(5)->two();
如果我没有误解您的意图,如果您没有使第二个方法成为静态的,您可以返回一个对象,它将作为$this在链式调用中传递
class SomeClass {
public $id = 0;
public static function one($id)
{
$obj = new self(); // Create and return new object
$obj->id = $id;
return $obj;
}
public function two()
{
$this->id = 3; // The new object is $this here
return $this;
}
}
$obj = SomeClass::one(5)->two();
如果我没有误解您的意图,如果您没有使第二个方法成为静态的,您可以返回一个对象,它将作为$this在链式调用中传递
class SomeClass {
public $id = 0;
public static function one($id)
{
$obj = new self(); // Create and return new object
$obj->id = $id;
return $obj;
}
public function two()
{
$this->id = 3; // The new object is $this here
return $this;
}
}
$obj = SomeClass::one(5)->two();
如果我没有误解您的意图,如果您没有使第二个方法成为静态的,您可以返回一个对象,它将作为$this在链式调用中传递
class SomeClass {
public $id = 0;
public static function one($id)
{
$obj = new self(); // Create and return new object
$obj->id = $id;
return $obj;
}
public function two()
{
$this->id = 3; // The new object is $this here
return $this;
}
}
$obj = SomeClass::one(5)->two();
two
是一种静态方法。您试图在一个实例上调用它,而静态方法按定义在特定实例上不起作用
使方法不是静态的,并操作
$this
而不是$obj
two
是一种静态方法。您试图在一个实例上调用它,而静态方法按定义在特定实例上不起作用
使方法不是静态的,并操作
$this
而不是$obj
two
是一种静态方法。您试图在一个实例上调用它,而静态方法按定义在特定实例上不起作用
使方法不是静态的,并操作
$this
而不是$obj
two
是一种静态方法。您试图在一个实例上调用它,而静态方法按定义在特定实例上不起作用
使方法不是静态的,并操纵
$this
而不是$obj
方法链接仅在使用setter时才有意义。
结合PHPDoc,大多数IDE(如NetBeans)将再次支持代码完成/自动完成功能
p.s请注意,方法链接可以让您在出现错误时有更多的机会,例如PHP致命错误:调用成员函数。。。。在…中的非对象上。。。。当混合到更多的班级时,返回
class Example {
protected $var = null;
public function __construct() {
}
public function __destruct() {
unset($this->var); // explicit memory clearing
}
/**
* @return \Example
*/
public static function create() {
return new self();
}
/**
* @return \Example
*/
public static function getInstance() {
return self::create();
}
/**
* @return \Example
*/
public static function newInstance() {
return self::create();
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing1($var) {
$this->var = $var;
return $this;
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing2($var) {
$this->var = $var;
return $this;
}
}
Example::create()->setThing1(1)->setThing2('2');
方法链接只有在使用setter时才有意义。 结合PHPDoc,大多数IDE(如NetBeans)将再次支持代码完成/自动完成功能 p.s请注意,方法链接可以让您在出现错误时有更多的机会,例如PHP致命错误:调用成员函数。。。。在…中的非对象上。。。。当混合到更多的班级时,返回
class Example {
protected $var = null;
public function __construct() {
}
public function __destruct() {
unset($this->var); // explicit memory clearing
}
/**
* @return \Example
*/
public static function create() {
return new self();
}
/**
* @return \Example
*/
public static function getInstance() {
return self::create();
}
/**
* @return \Example
*/
public static function newInstance() {
return self::create();
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing1($var) {
$this->var = $var;
return $this;
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing2($var) {
$this->var = $var;
return $this;
}
}
Example::create()->setThing1(1)->setThing2('2');
方法链接只有在使用setter时才有意义。 结合PHPDoc,大多数IDE(如NetBeans)将再次支持代码完成/自动完成功能 p.s请注意,方法链接可以让您在出现错误时有更多的机会,例如PHP致命错误:调用成员函数。。。。在…中的非对象上。。。。当混合到更多的班级时,返回
class Example {
protected $var = null;
public function __construct() {
}
public function __destruct() {
unset($this->var); // explicit memory clearing
}
/**
* @return \Example
*/
public static function create() {
return new self();
}
/**
* @return \Example
*/
public static function getInstance() {
return self::create();
}
/**
* @return \Example
*/
public static function newInstance() {
return self::create();
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing1($var) {
$this->var = $var;
return $this;
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing2($var) {
$this->var = $var;
return $this;
}
}
Example::create()->setThing1(1)->setThing2('2');
方法链接只有在使用setter时才有意义。 结合PHPDoc,大多数IDE(如NetBeans)将再次支持代码完成/自动完成功能 p.s请注意,方法链接可以让您在出现错误时有更多的机会,例如PHP致命错误:调用成员函数。。。。在…中的非对象上。。。。当混合到更多的班级时,返回
class Example {
protected $var = null;
public function __construct() {
}
public function __destruct() {
unset($this->var); // explicit memory clearing
}
/**
* @return \Example
*/
public static function create() {
return new self();
}
/**
* @return \Example
*/
public static function getInstance() {
return self::create();
}
/**
* @return \Example
*/
public static function newInstance() {
return self::create();
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing1($var) {
$this->var = $var;
return $this;
}
/**
*
* @param mixed $var
* @return \Example
*/
public function setThing2($var) {
$this->var = $var;
return $this;
}
}
Example::create()->setThing1(1)->setThing2('2');
太好了,这正是我要找的!非常感谢。第二个静态函数是错误的,我只是复制了第一个方法,但不小心忘记了(我更正了它)。我不知道我可以在链式调用中将$obj称为$this。太好了,这正是我要找的!非常感谢。第二个静态函数是错误的,我只是复制了第一个方法,但不小心忘记了(我更正了它)。我不知道我可以在链式调用中将$obj称为$this。太好了,这正是我要找的!非常感谢。第二个静态函数是错误的,我只是复制了第一个方法,但不小心忘记了(我更正了它)。我不知道我可以在链式调用中将$obj称为$this。太好了,这正是我要找的!非常感谢。第二个静态函数是错误的,我只是复制了第一个方法,但不小心忘记了(我更正了它)。我不知道我可以在链式通话中把$obj称为$this。谢谢你的解释,希望我能接受两个答案:D我一得到15次就做:D谢谢你的解释,希望我能接受两个答案:D我一得到15次就做:D谢谢你的解释,希望我能接受两个答案:D我将在15次重复后立即接受:D谢谢你的解释,希望我能接受两个答案:D我将在15次重复后立即接受:D“方法链接仅在使用setter时才有意义”不是真的。非常感谢你提供了这个示例,但我一直在寻找Joachim和meagar解释的内容。“方法链接只有在使用setter时才有意义”不是真的。非常感谢您提供了这个示例,但我一直在寻找Joachim和meagar解释的内容。“方法链接只有在使用setter时才有意义”不是真的。非常感谢您提供了这个示例,但我一直在寻找Joachim和meagar解释的内容。“方法链接只有在使用setter时才有意义”不是真的。非常感谢您提供了这个示例,但我一直在寻找Joachim和meagar解释的内容。