在类内部,有没有办法将类属性绑定到方法参数,以便在单击Ctrl + 单击时建立双向链接?
class Attachments extends Repository
{
public Documents $documents;
public function fromDocuments(callable $scope)
{
$this->scopeOnRepoProperty($scope, 'documents');
}
}
我的意思是,在这种情况下,scopeOnRepoProperty() 方法中的第二个参数 documents 应该引用属性 $documents。
更广泛的背景是:
问题是,代码的很大一部分非常类似,即大多数 scopeXXX/fromXXX 方法都会执行类似的操作,即将属性 repository 作为参数传递给方法。例如,在上面的示例中,会执行 $scope($this->documents);此外,如果 $this->documents 没有初始化,将创建一个新实例。
所以代码看起来是这样的:
public function fromDocuments(callable $scope)
{
if (!isset($this->documents)) {
$this->documents = new Documents();
}
$scope($this->documents);
}
我想避免每次编写 if 语句、创建新对象和调用方法,于是我想到可以使用一个方法来实现,该方法将接受一个可调用对象、属性名称和类型反射类名。
代码运行良好,但不幸的是,由于这种方式,我失去了对这些属性的绑定。在先前的版本中,是 $this->documents,因此链接是存在的,但现在不再存在。
我想知道是否有任何方法可以实现这一点。有什么想法吗?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号