j'ai une classe Object_Model, qui me permet de définir tout un tas de fonctions utiles dans toute mon application.
je fais hériter de cette classe toutes mes autres classes, pour qu'elles aient accès à ces fonctions.
class User extends Object_Model {
}
Dans Object_Model, j'ai également une méthode hydrate() qui me permet d'attribuer les valeurs à mes attributs :
class Object_Model {
public function __construct() {
}
public function hydrate($array) {
foreach($array as $key => $value) {
$this->$key = $value;
}
}
Et lorsque j'initialise un nouveau User, j'apelle hydrate() :class User extends Object_Model {
private $user_id;
private $user_datetime;
private $user_prenom;
private $user_nom;
private $user_telephone;
private $user_mail;
public function __construct($object_or_array_or_id = '') {
global $lang;
if(is_object($object_or_array_or_id)) {
$item = $object_or_array_or_id;
}
if(is_array($object_or_array_or_id)) {
$item = $object_or_array_or_id;
}
elseif(is_numeric($object_or_array_or_id)) {
$item = get_row_from_query(sprintf("SELECT USERS.*
FROM " . TABLES__ADMIN_USERS . " USERS
WHERE user_id = '%d'", mysql_real_escape_string($object_or_array_or_id)));
}
if(!empty($item)) {
$this->hydrate($item);
}
}
}
Sauf qu'actuellement, PHP me retourne une erreur de scope : Ce que je comprend tout à fait. $user_nom est private (ce qui est logique). Est-il possible d'utiliser cette fonction hydrate() dans les classes filles ? Si non, je dois forcément re-déclarer hydrate() dans toutes mes classes ? Une autre solution ?Fatal error: Cannot access private property User::$user_nom in Z:\Production\common\classes\class.object_model.php on line 38