PHP从对象类添加方法到另一个对象类

时间:2019-03-15 18:29:01

标签: php class object

我有一个这样的对象:

CORE::$ObjClassInstABS['ABS']['DATA']

包含Class->Method的数组:

array (
  'DATA' => 
  array (
    'USERDATAMANAGER' => 
    Class_UserdataManager::__set_state(array(
    )),
    'PRODDATAMANAGER' => 
    Class_ProddataManager::__set_state(array(
    )),
  ),
)

我创建了一个新的类类型为这样的对象:

CORE::$ObjClassInstABS['ABS']['ABSDATAMANAGER'] = new class;

我不能,但是需要将第一个对象的所有方法都传递给我,而无需将原始类传递给我即时创建的类,这使我可以执行即时声明的类中的功能。 这是否存在于php 7.0中,或者有什么方法可以实现? 就像将多个类的方法克隆到一个新类中一样。

@Damian Dziaduch评论的答案

我用来从目录动态实例化所有类文件的这段代码是这样,并用class实例填充第一个对象:

CORE::$ObjClassInstABS['ABS']['ABSDATAMANAGER']= new class;    
foreach (CORE::$ObjClassABS['DATA'] as $key => $name) {
    if (strpos($name, 'class.') !== false) {
        $name  = basename($name);
        $name  = preg_replace('#\.php#', '', $name);
        $names = explode(".", $name);
        foreach ($names as $key => $namesr) {
            $names[$key] = ucfirst(strtolower($namesr));
        }
        $name                                         = implode('_', $names);
        $NamesClass                                   = $name . 'Manager';
        $InstanceClass                                = strtoupper(preg_replace('#\Class_#', '', $NamesClass));
        CORE::$ObjClassInstABS['ABS']['DATA'][$InstanceClass] = $this->$InstanceClass = new $NamesClass();
    }
}

其结果是在帖子CORE::$ObjClassInstABS['ABS']['DATA']开头打印的数组。

如果在foreach开始时看到我有新的类声明要在循环中使用,我如何在循环中使用第一个对象实例的所有方法填充CORE::$ObjClassInstABS['ABS']['ABSDATAMANAGER']并将其设为可执行文件?

我想(不工作):

foreach ( CORE::$ObjClassInstABS['ABS']['DATA'] as $key => $value ) {
    CORE::$ObjClassInstABS['ABS']['ABSDATAMANAGER'] .= Clone($value);
}

$value表示方法的存储位置:

 ::__set_state(array()),

1 个答案:

答案 0 :(得分:0)

根据要求。

不确定是否会满足您的要求...问题是您是否能够覆盖>>> for _ in range(10): print(next(sequences)) 20160119-0-0-0 20160119-0-0-1 20160119-0-0-2 20160119-0-0-3 20160119-0-0-4 20160119-0-0-5 20160119-0-0-6 20160119-0-0-7 20160119-0-0-8 20160119-0-0-9

CORE::$ObjClassInstABS