С Tx_Extbase_Property_Mapper::map()
(«старый свойство картограф») можно было скопировать атрибуты от одного к другому объекту:Как скопировать атрибуты из одного объекта в другой с помощью TYPO3 Extbase?
$propertyMapper = t3lib_div::makeInstance('Tx_Extbase_Property_Mapper');
$propertyMapper->map(array('senderAddress', 'recipientAddress', 'subject', 'body'), $oldObj, $newObj);
С «новой» собственности картографа метод map()
не существует больше.
Есть ли рабочая/элегантная возможность скопировать атрибуты от одного к другому объекту в Extbase?
Я не думаю, что эквивалент существует, насколько я понял? Чего именно вы хотите достичь? Только что данный массив свойств из $ objA будет скопирован в $ objB? (что не связано с каким-либо сопоставлением). Или вам нужно какое-то разрешение (например, senderAddress on A - поле foobar на B?) – Susi
@Susi Я наткнулся на него, обновляя расширение TYPO3 от TYPO3 4.5 до 7.6: в расширении ' Tx_Extbase_Property_Mapper :: map() 'использовался для установки некоторых атрибутов вновь созданного объекта со значениями атрибутов существующего объекта (одного типа). Я думаю, что до тех пор, пока для каждого атрибута есть геттер и сеттер, фрагмент @ froemken выполнит эту работу. К настоящему моменту я не уверен, что если использовать 'Tx_Extbase_Property_Mapper :: map()' или решение @ froemken (хотя оно отлично работает) даже необходимо (для моей usecase) - я думаю, что я предпочитаю называть getter и setter для каждого свойства явно. –
Вызов геттера и сеттера предпочтительнее, если возможно - по крайней мере для меня. Это кажется намного более чистым и более явным (без магии);). – Susi