Od jakiegoś czasu zajmuję się klasową stronką - teraz robię nowy projekt. Kupiłem sobie książkę, która jest w większej części o programowaniu obiektowym. Pierwsze przykłady w niej dotyczyły menadżera kontaktów. Ponieważ mi nie jest potrzebny menadżer kontaktów, postanowiłem przerobić to na menadżer userów

Na początku zająłem się trzema klasami: PropertyObject (obiekt własności wspomagający uzyskiwanie dostępu do poszczególnych własności klasy), DataManager (pobiera dane z bazy danych i zwraca odpowiednie wartości), no i Contact (informacje o użytkowniku). Nie wiem niestety czemu, ale mimo informacji o dziedziczeniu, metody klasy PropertyObject nie znajdują się w klasie Contact. Oto kody:
CPropertyObject.php
<?php require_once("interfaces/IValidator.php"); abstract class PropertyObject implements Validator { protected $data; //Dane z bazy danych public function __construct($arData) { $this->data = $arData; //Nadanie zmiennej tablicy z bazy danych } function getProp($what) { return $this->data[$this->propertyTable[$what]]; } function setProp($what, $how) { $this->data[$this->propertyTable[$what]] = $how; $changedProperties[] = $what; } } function validate() {} } ?>
CContact.php
<?php require_once("CPropertyObject.php"); class Contact extends PropertyObject { function __construct($contactID) { $arData = DataManager::getContactData($contactID); parent::__construct($arData); $this->PropertyTable['contactid'] = 'contact_id'; $this->PropertyTable['id'] = 'contact_id'; $this->PropertyTable['userid'] = 'user_id'; $this->PropertyTable['firstname'] = 'sname1'; $this->PropertyTable['lastname'] = 'sname2'; $this->PropertyTable['e-mail'] = 'email'; $this->PropertyTable['gg'] = 'gadu_gadu'; $this->PropertyTable['skype'] = 'skype'; } function validate() { } function wypisz() { return $this->data['sname1']; } function __toString() { /*LINIA 29*/ return getProp('firstname') . ' ' . getProp('lastname'); } } ?>
No i jeszcze musiałem jakoś przetestować działanie obiektów:
test.php
<?php require_once("modules/ACDataManager.php"); require_once("modules/CContact.php"); $obj = new Contact(1); ?>
Uruchomienie tego skryptu owocuje wygenerowaniem błędu:
Cytat
Fatal error: Call to undefined function getprop() in D:\servhost\Kronika\modules\CContact.php on line 29
Co jest nie tak? Co zrobiłem źle?