将自定义方法的参数绑定到类属性上
P粉364642019
P粉364642019 2023-07-28 17:29:03
[PHP讨论组]

在类内部,有没有办法将类属性绑定到方法参数,以便在单击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,因此链接是存在的,但现在不再存在。

我想知道是否有任何方法可以实现这一点。有什么想法吗?


P粉364642019
P粉364642019

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号