PHP克隆/复制/将方法从一个对象移动到另一个对象

时间:2018-09-07 22:36:14

标签: php function object

我已经搜索了大约一个小时左右。我一直在寻找有关WRONG主题的文章; “克隆方法”提出了称为克隆的方法; 检查是否有重复的方法; 重构 ...这些不是我想要的。

我所拥有的是一个非常普通且基本的要求,但是考虑到我还没有找到讨论它的文章,因此具有挑战性。我想将方法​​从一个对象移到另一个。假设我创建了两个通用对象:

class Test {
    private function test0($param=null) {echo 'test0';}
    protected function test1($param=null) {echo 'test1';}
    public function test2($param=null) {echo 'test2';}
    public function test3($param=null) {echo 'test3';}
}
$test = new Test();
$copy = new stdClass();

如何在$test中搜索方法,并在$copy中复制它们?另外,我不想复制所有内容。假设我只想复制test0()test1()test2()

然后,我想从$test中一一删除这些方法(但不要进行大量修剪)。我想手动控制复制,复制和删除方法。

1 个答案:

答案 0 :(得分:0)

PHP不是javascript。在不知道您的原因的情况下,听起来您可能想要研究像依赖注入/控制反转。

或者,有一个名为runkit的PHP扩展,可以非常直接地允许您添加/删除方法。因此,您可以简单地使用具有所有方法的Base类,并使用runkit删除不需要的任何方法。但是,Runkit尚未针对php7更新。

话虽如此,特征最接近“可以添加到任何类的预定义方法”。结合内置的PHP magic method __call,您可以像他们对this trait based library (spatie/macroable)所做的那样进行装配。

通常,这样编写,测试和运行代码有很多缺点。俗话说:剪羊有多种方法。