2015-12-29 114 views
0

我是新來pimcore並創建了一個對象類 - 這裏的代碼片段保存記錄時將獲得場「稱號」:pimcore對象類:獲取所有數據

class MagentoBaseProduct extends Concrete { 

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

我想知道如果有沒有得到整個對象,以便我將一個數組中的所有字段(而不是分別獲取每個字段)?

感謝

+0

出於好奇,這將是對這個用例? – GNi33

回答

1

你可以使用PHP的自省能力,以獲得在對象吸氣的名單,然後依次訪問每個吸氣得到的值,並建立從這個數組。記住值可能不是簡單的字符串 - 它們可能是其他對象,字段集合或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

下應該做的伎倆很容易:

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