考虑编写下面的类:
class SomeClass
{
/** @var array */
private $files;
/** @var string */
private $productName;
/** @var bool */
private $singlePage;
/** @var bool */
private $signatureRequested;
function __construct(array $files, string $productName, bool $singlePage, bool $signatureRequested = true)
{
$this->files = $files;
$this->productName = $productName;
$this->singlePage = $singlePage;
$this->signatureRequested = $signatureRequested;
}
}$files,其他参数列出4次-您必须键入参数名称,然后将其复制粘贴,或在上面的锅炉模板代码中输入3次。有没有办法减少键入所有这些代码所需的工作量?
在我看来,理想情况下,我想要一些东西,我可以在构造函数中指定需要初始化的参数,只需一次,然后一些机制就会继续并填充剩余的样板代码。
有这样的机制/代码构造吗?
发布于 2021-06-03 21:47:02
尽管写这个问题时的答案是“否”,但现在答案是“是”:PHP8.0中添加Constructor Property Promotion就是为了这个目的。
它的工作方式是在构造函数签名中列出属性可见性,并同时声明属性和参数。
因此,您的整个示例将简化为:
class SomeClass
{
function __construct(
private array $files,
private string $productName,
private bool $singlePage,
private bool $signatureRequested = true
) { }
}发布于 2018-08-29 03:48:11
如果您使用的是PHPStorm,可以查看以下内容:
PhpStorm shortcut to generate constructor params functionality
我可以通过几个简单的快捷方式生成所有这些内容。我相信其他IDE也有同样的特性。
https://stackoverflow.com/questions/52065147
复制相似问题