Subversion Repositories PHPX

Rev

Rev 54 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 54 Rev 59
Line 15... Line 15...
15
}
15
}
16
16
17
/**
17
/**
18
 * Abstract model class
18
 * Abstract model class
19
 *
19
 *
20
 * Provides basic setters and getters for protected/private properties
-
 
21
 * and a constructor to initialize properties using setters and getters.
20
 * Provides a constructor to initialize properties using setters and getters.
22
 *
21
 *
23
 * @author Thomas Lahn
22
 * @author Thomas Lahn
24
 */
23
 */
25
abstract class AbstractModel
24
abstract class AbstractModel extends Base
26
{
25
{
27
  /**
26
  /**
28
   * Creates a new model object
27
   * Creates a new model object
29
   *
28
   *
30
   * @param array $data     Initialization data (optional)
29
   * @param array $data     Initialization data (optional)
Line 37... Line 36...
37
      $this->map($data, $mapping);
36
      $this->map($data, $mapping);
38
    }
37
    }
39
  }
38
  }
40
39
41
  /**
40
  /**
42
   * Getter for properties
-
 
43
   *
-
 
44
   * @param string $name
-
 
45
   * @throws ModelPropertyException
-
 
46
   * @return mixed
-
 
47
   */
-
 
48
  public function __get ($name)
-
 
49
  {
-
 
50
    /* Support for Object-Relational Mappers */
-
 
51
//      if (strpos($name, 'persistent') === 0)
-
 
52
//     {
-
 
53
//      $class = get_class($this);
-
 
54
//      return $class::${"_" . $name};
-
 
55
//     }
-
 
56
-
 
57
    $method = 'get' . ucfirst($name);
-
 
58
-
 
59
    if (method_exists($this, $method))
-
 
60
    {
-
 
61
      return $this->$method();
-
 
62
    }
-
 
63
-
 
64
    if (property_exists($this, "_$name"))
-
 
65
    {
-
 
66
      return $this->{"_$name"};
-
 
67
    }
-
 
68
-
 
69
    return $this->$name;
-
 
70
  }
-
 
71
-
 
72
  /**
-
 
73
   * Setter for properties
-
 
74
   *
-
 
75
   * @param string $name
-
 
76
   * @param mixed $value  The new property value before assignment
-
 
77
   * @throws ModelPropertyException
-
 
78
   */
-
 
79
  public function __set ($name, $value)
-
 
80
  {
-
 
81
    $method = 'set' . ucfirst($name);
-
 
82
-
 
83
    if (method_exists($this, $method))
-
 
84
    {
-
 
85
      return $this->$method($value);
-
 
86
    }
-
 
87
-
 
88
    if (property_exists($this, "_$name"))
-
 
89
    {
-
 
90
      $this->{"_$name"} = $value;
-
 
91
      return $this->{"_$name"};
-
 
92
    }
-
 
93
-
 
94
    /* NOTE: Attempts to set other properties are _silently_ _ignored_ */
-
 
95
  }
-
 
96
-
 
97
  /**
-
 
98
   * Returns <code>true</code> if a variable name is a property variable name
41
   * Returns <code>true</code> if a variable name is a property variable name
99
   * (starts with <tt>$_</tt>), <code>false</code> otherwise.
42
   * (starts with <tt>$_</tt>), <code>false</code> otherwise.
100
   *
43
   *
101
   * @param string $varName
44
   * @param string $varName
102
   * @return boolean
45
   * @return boolean