php - 克隆实例并链接方法调用,可能吗?

标签 php object clone chaining

是否可以clone实例通过链接在其上调用方法?这给了我一个语法错误:

/**
 * Parse an object containing (eventually) "duration" property or "year" (and
 * eventually) "month" properties.
 *
 * @return array Array containing start date and end date DateTime objects.
 */
public function parseTimeArgs($args)
{
    $now = new DateTime();

    if(isset($args->duration) && $duration = new DateInterval($args->duration))
        return array((clone $now)->sub($duration), $now);
}

最佳答案

不,这是不可能的。您可以改用“工厂”方法:

public function parseTimeArgs($args)
{
    $now = new DateTime();

    if(isset($args->duration) && $duration = new DateInterval($args->duration))
        return array($this->clone($now)->sub($duration), $now);
}

public function clone($object)
{
    return clone $object;
}


旁注:当前也无法通过这种方式使用new运算符。在即将发布的PHP 5.4版本中,new可以如下实现:

$a = (new a())->doStuff()->foMoreStuff();


但是,此处不支持克隆。

关于php - 克隆实例并链接方法调用,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912101/

相关文章:

svg - 克隆 svg 组

PHP下拉列表不选择值

php - "Wrong parameters for Exception"创建Exception子类时

python - 对一个对象执行某些操作会对同一类的所有对象执行相同的操作吗?

javascript - 根据两个键从对象数组中获取唯一值

jquery - 复制 Jquery Draggable

c - 如何使用clone()让父进程和子进程同时运行?

php - Laravel sqlite 查询错误

php - 选择框中选择的不同值和 id

c++ - 如何显示类中的坐标?