Witam. Mam książkę z helionu "PHP. Zaawansowane programowanie" i jest tak taki kod:
<?php
require_once('interface.Validator.php');
abstract class PropertyObject implements Validator {
protected
$propertyTable = array(); // Przechowuje pary nazwa-wartość // przypisujące własności do
// pól bazy danych
protected
$changedProperties = array(); // Lista własności, które zostały // zmodyfikowane
protected $data; // Dane z bazy danych
protected
$errors = array(); // Ewentualne błędy walidacji
public function __construct($arData) {
$this->data = $arData;
}
function __get($propertyName) {
throw new Exception("Błędna własność \"$propertyName\"!");
if(method_exists($this, 'get' . $propertyName)) {
return call_user_func
(array($this, 'get' . $propertyName)); } else {
return $this->data[$this->propertyTable[$propertyName]];
}
}
function __set($propertyName, $value) {
throw new Exception("Błędna własność \"$propertyName\"!");
if(method_exists($this, 'set' . $propertyName)) {
return call_user_func(
array($this, 'set' . $propertyName), $value
);
} else {
// Jeśli wartość własności uległa zmianie i nie ma jej
// jeszcze w tabeli changedProperties, zostaje do niej dołączona
if($this->propertyTable[$propertyName] != $value &&
!in_array($propertyName, $this->changedProperties)) { $this->changedProperties[] = $propertyName;
}
// Przypisuje nową wartość
$this->data[$this->propertyTable[$propertyName]] = $value;
}
}
function validate() {
}
}
?>
Fragment którego nie rozumiem to:
return $this->data[$this->propertyTable[$propertyName]]
Skoro propertyTable to tablica przechowująca dane w postaci nazwa-wartość to dla przykładowych danych nazwa: 'imie', wartość: 'Piotrek', będzie to wyglądało tak:
return $this->data[$this->propertyTable['imie']]
czyli
return $this->data['piotrek']
Wydaję mi się, że w tablicy $data nie będzie takiego klucza jak 'piotrek'. Czy mógłby mi ktoś wyłumaczyć o co chodzi, albo co źle rozumuję?