2 /***************************************************************
5 * (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
17 * This script is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * This copyright notice MUST APPEAR in all copies of the script!
23 ***************************************************************/
26 * A generic Domain Object
32 abstract class Tx_Extbase_DomainObject_AbstractDomainObject
implements Tx_Extbase_DomainObject_DomainObjectInterface
{
40 * The generic constructor. If you want to implement your own __constructor() method in your Domain Object you have to call
41 * $this->initializeObject() in the first line of your constructor.
45 public function __construct() {
46 $this->initializeObject();
50 * This is the magic __wakeup() method. It's invoked by the unserialize statement in the reconstitution process
51 * of the object. If you want to implement your own __wakeup() method in your Domain Object you have to call
52 * parent::__wakeup() first!
56 public function __wakeup() {
57 foreach ($GLOBALS['Extbase']['reconstituteObject']['properties'] as $propertyName => $propertyValue) {
58 $this->_reconstituteProperty($propertyName, $propertyValue);
60 $this->initializeObject();
64 * A template method to initialize an object. This can be used to manipulate the object after
65 * reconstitution and before the clean state of it's properties is stored.
69 protected function initializeObject() {
77 public function getUid() {
82 * Reconstitutes a property. This method should only be called at reconstitution time!
84 * @param string $propertyName
85 * @param string $value
89 public function _reconstituteProperty($propertyName, $value) {
90 if (property_exists($this, $propertyName)) {
91 $this->$propertyName = $value;
98 * Returns a hash map of property names and property values
100 * @return array The properties
103 public function _getProperties() {
104 $properties = get_object_vars($this);
105 // unset($properties['_cleanProperties']); // TODO Check this again
110 * Returns the property value of the given property name
112 * @return array The propertyName
115 public function _getPropertyValue($propertyName) {
116 return $this->$propertyName;
120 * Returns TRUE if the object is new (the uid was not set, yet)
125 // TODO Discuss, if this is the right way to say _isNew()
126 public function _isNew() {
127 return $this->uid
=== NULL;
131 * Register an object's clean state, e.g. after it has been reconstituted
137 public function _memorizeCleanState() {
141 * Returns a hash map of dirty properties and $values. This is always the empty array for ValueObjects, because ValueObjects never change.
146 public function _getDirtyProperties() {
151 * Returns TRUE if the properties were modified after reconstitution. However, value objects can be never updated.
156 public function _isDirty() {