Spaces:
Sleeping
Sleeping
File size: 4,362 Bytes
07c3cdd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | <?php
class EntityBase
{
/**
* this function check if a field is in the data sent in the constructor
* you can specify an array, and this function will use like alias
*/
protected function validateField($field, $default = false)
{
$fieldIsEmpty = true;
// this is a trick, if $fields is a string, $fields will be an array with
// one element
if (is_array($field)) {
$fields = $field;
} else {
$fields = array();
$fields [] = $field;
}
// if there are aliases for this field, evaluate all aliases and take the
// first occurence
foreach ($fields as $k => $f) {
if (isset($this->temp [$f])) {
$fieldIsEmpty = false;
return $this->temp [$f];
}
}
// field empty means the user has not sent a value for this Field, so we are
// using the default value
if ($fieldIsEmpty) {
if ($default !== false) {
return $default;
}
}
}
protected function validateRequiredFields($requiredFields = array())
{
foreach ($requiredFields as $k => $field) {
if ($this->{$field} === null) {
throw (new Exception("Field $field is required in " . get_class($this)));
die();
}
}
}
/**
* Copy the values of the Entity to the array of aliases
* The array of aliases must be defined.
*
* @return Array of alias with the Entity values
*/
public function getAliasDataArray()
{
$aAlias = array();
// get aliases from class
$className = get_class($this);
if (method_exists($className, 'GetAliases')) {
$aliases = call_user_func(array(
$className,
'GetAliases'
));
foreach ($this as $field => $value) {
if (isset($aliases [$field])) {
// echo "Field exists in Aliases: " . $field . "\n";
// echo "Alias Name:" . $aliases[$field] . "\n";
// echo "Alias value:" . $value . "\n";
$aAlias [$aliases [$field]] = $value;
}
}
}
return $aAlias;
}
/**
* Set the data from array of alias to Entity
*
* @param $aAliasData array of data of aliases
*/
public function setAliasDataArray($aAliasData)
{
// get aliases from class
$className = get_class($this);
if (method_exists($className, 'GetAliases')) {
$aliases = call_user_func(array(
$className,
'GetAliases'
));
// $aliases = $className::GetAliases ();
foreach ($this as $field => $value) {
if (isset($aliases [$field])) {
$this->{$field} = $aAliasData [$aliases [$field]];
}
}
}
}
/**
* Initialize object with values from $data.
* The values from data use properties or alias array.
*
* @param $data
*/
protected function initializeObject($data)
{
// get aliases from class
$className = get_class($this);
$aliases = array();
$swAliases = false;
if (method_exists($className, 'GetAliases')) {
$aliases = call_user_func(array(
$className,
'GetAliases'
));
// $aliases = $className::GetAliases ();
$swAliases = true;
}
// use object properties or aliases to initialize
foreach ($this as $field => $value) {
if (isset($data [$field])) {
$this->$field = $data [$field];
} elseif ($swAliases && isset($aliases [$field]) && isset($data [$aliases [$field]])) {
$this->$field = $data [$aliases [$field]];
}
}
}
public function serialize()
{
if (isset($this->temp)) {
unset($this->temp);
}
return serialize($this);
}
public function unserialize($str)
{
$className = get_class($this);
$data = unserialize($str);
return new $className($data);
}
}
|