Php 对替代构造函数使用newInstanceWithoutConstructor

Php 对替代构造函数使用newInstanceWithoutConstructor,php,Php,PHP没有函数/方法重载,所以我一直在为其他构造函数创建静态方法。但是,我仍然希望有一个\uu construct方法,我只是不想在使用静态c'tor时调用它,所以我想到了这个: public static function instance(\Psr\Http\Message\ResponseInterface $resp) { /** @var static $new */ $new = (new \ReflectionClass(get_called_class()))-&

PHP没有函数/方法重载,所以我一直在为其他构造函数创建静态方法。但是,我仍然希望有一个
\uu construct
方法,我只是不想在使用静态c'tor时调用它,所以我想到了这个:

public static function instance(\Psr\Http\Message\ResponseInterface $resp) {
    /** @var static $new */
    $new = (new \ReflectionClass(get_called_class()))->newInstanceWithoutConstructor();
    $new->body = $resp->getBody();
    $new->statusCode = $resp->getStatusCode();
    $new->reasonPhrase = $resp->getReasonPhrase();
    $new->protocolVersion = $resp->getProtocolVersion();
    $new->setHeaders($resp->getHeaders());
    return $new;
}

这有多糟?有什么我应该注意的地方吗?

我会以一种可以从所有静态备选方案调用的方式来设计构造函数。可能当前的构造函数做得太多了


然而,由于PHP5.4支持该方法,所以这并没有什么不好的。

我通常更喜欢这样做,但有时我只是不想要
\uu construct
提供的功能,或者我必须覆盖它设置的所有属性。我想正是出于这个原因,该方法被添加到PHP5.4中。但它总是取决于实际的用例。我还需要承认我以前不知道这个方法。以前,有一种方法可以从PDO查询中获取自定义类的对象,而无需调用构造函数。似乎开发人员也喜欢其他用例。