pimcore对象类:获取所有数据

时间:2015-12-29 11:49:47

标签: php pimcore

我是pimcore的新手并创建了一个对象类 - 这里是保存记录时将获得字段“title”的代码片段:

class MagentoBaseProduct extends Concrete {

    public function getTitle () {
        $preValue = $this->preGetValue("title"); 
        if($preValue !== null && !\Pimcore::inAdmin()) { 
            return $preValue;
        }
        $data = $this->title;
        return $data;
    }
}

我想知道是否有获取整个对象以便我将所有字段都放在一个数组中(而不是单独获取每个字段)?

感谢

2 个答案:

答案 0 :(得分:1)

您可以使用PHP的内省功能获取对象中的getter列表,然后依次访问每个getter以获取值并从中构建数组。记住值可能不是简单的字符串 - 它们可能是其他对象,字段集合或Pimcore允许的任何其他内容。

$myObj = \Object\MagentoBaseProduct::getById(123);
$reflection = new \ReflectionClass($myObj);
$methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC);

foreach ($methods as $method) {
    $methodName = $method->getName();
    if (substr($methodName, 0, 3) == 'get') {
        // do stuff to add to array here
    }
}

http://php.net/manual/en/book.reflection.php

答案 1 :(得分:1)

以下应该更容易做到这一点:

$data = []; 
$myObj = \Object\MagentoBaseProduct::getById(123);
foreach($myObj->getClass()->getFieldDefinitions() as $fieldDefionition) {
    $data[$fieldDefinition->getName()] = $myObj->getValueForFieldName($fieldDefinition->getName()); 
}