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

沃尔特·努涅斯

我有一个这样的对象:

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()),
达米安(Damian Dziaduch)

按照要求。

不确定是否会满足您的要求...问题是您是否能够覆盖 CORE::$ObjClassInstABS

<?php

CORE::$ObjClassInstABS = new class extends \ArrayIterator {
    private $container = [];

    public function __construct(array $container)
    {
        $this->container = [
            'ABS' => [
                'DATA' => [
                    'USERDATAMANAGER' => new class {},
                    'PRODDATAMANAGER' => new class {},
                ],
            ],
        ];
    }

    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    public function offsetGet($offset)
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从对象数组另一个类调用方法?

将一个类对象到另一个使用流

将类对象传递到另一个类中的列表的方法

接受一个类对象或另一个类对象的方法

如何复制另一个类的对象?

将MVC模型类对象值复制到另一个对象

如何将方法从一个类添加到另一个类的现有对象

如何在C ++中将类对象的引用正确传递到另一个类对象

如何访问另一个类的对象

如何从另一个类添加对象

春天如何将一个对象注入到另一个类对象?

通过全局失败将连接对象传递到另一个类中(PHP)

使用另一个对象的方法实例化一个抽象类?

在PHP中创建另一个类的对象的正确方法是什么?

复制一个对象,该对象包含另一个对象的超类

如何通过创建另一个类的对象的类访问方法?

从接口访问另一个类中的对象?

用另一个类创建新对象

从另一个对象类方法调用一个对象及其方法

将一个类的对象传递给另一个类的方法

如何通过Java中的方法将对象从一个类传递到另一个类

在另一个类中填充对象

从另一个类添加多个类对象

无法从另一个类创建类对象

将对象从一个类传递到另一个类

将类对象传递给另一个类方法 Python

将类对象的结果添加到python中的另一个类

在同一个类的另一个方法中调用一个类的方法的对象

将可枚举自己的属性从对象数组复制到另一个类对象数组的最佳方法