我已经搜索了大约一个小时左右。我一直在寻找有关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
中一一删除这些方法(但不要进行大量修剪)。我想手动控制复制,复制和删除方法。
答案 0 :(得分:0)
PHP不是javascript。在不知道您的原因的情况下,听起来您可能想要研究像依赖注入/控制反转。
或者,有一个名为runkit的PHP扩展,可以非常直接地允许您添加/删除方法。因此,您可以简单地使用具有所有方法的Base类,并使用runkit删除不需要的任何方法。但是,Runkit尚未针对php7更新。
话虽如此,特征最接近“可以添加到任何类的预定义方法”。结合内置的PHP magic method __call,您可以像他们对this trait based library (spatie/macroable)所做的那样进行装配。
通常,这样编写,测试和运行代码有很多缺点。俗话说:剪羊有多种方法。