Salve ragazzi, non riesco a capire bene questo metodo:
Il metodo dovrebbe essere un metodo magico perchè inizia con il doppio underscore __ Questo metodo viene richiamato automaticamente quando viene usata in scrittura una proprietà inaccessibile.
Il metodo riceve 2 parametri ($propertyName e $value).
array_key_exists cerca una chiave ($propertyName) nell'array $this->propertyTable. Se il risultato è true viene cambiato in false per via della negazione logica ! E quindi va ad eseguire l'altro if.
Questo controlla se il metodo $propertyName esiste nella classe $this. Se il risultato è true ritorna la funzione definita dall'utente array($this,'set'.$properttName) passandogli il parametro $value.
Non mi convince il significato di $this, a cosa si riferisce esattamente?
Grazie
Codice:
public function __set($propertyName, $value) {
if(!array_key_exists($propertyName, $this->propertyTable)) {
throw new Exception("Invalid property \"$propertyName\"!");
}
if(method_exists($this, 'set' . $propertyName)) {
return call_user_func(
array($this, 'set' . $propertyName),
$value);
} else {
if($this->propertyTable[$propertyName] != $value &&
!in_array($propertyName, $this->changedProperties)) {
$this->changedProperties[] = $propertyName;
}
$this->data[$this->propertyTable[$propertyName]] = $value;
}
}
Il metodo dovrebbe essere un metodo magico perchè inizia con il doppio underscore __ Questo metodo viene richiamato automaticamente quando viene usata in scrittura una proprietà inaccessibile.
Il metodo riceve 2 parametri ($propertyName e $value).
Codice:
if(!array_key_exists($propertyName, $this->propertyTable)) {
throw new Exception("Invalid property \"$propertyName\"!");
}
array_key_exists cerca una chiave ($propertyName) nell'array $this->propertyTable. Se il risultato è true viene cambiato in false per via della negazione logica ! E quindi va ad eseguire l'altro if.
Codice:
if(method_exists($this, 'set' . $propertyName)) {
return call_user_func(
array($this, 'set' . $propertyName),
$value);
}
Questo controlla se il metodo $propertyName esiste nella classe $this. Se il risultato è true ritorna la funzione definita dall'utente array($this,'set'.$properttName) passandogli il parametro $value.
Non mi convince il significato di $this, a cosa si riferisce esattamente?
Grazie