Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[php] Ciekawostka dotycząca obiektowości.
Ciekawostka polega na nietypowym zachowaniu się interpretatora PHP w przypadku gdy wywołamy metodę, w której znajduje się odwołanie do instancji obiektu (za pomocą $this), jako metodę statyczną.
Sytuację można przedstawić za pomocą dwóch klas:
-
class Klasa1 {
-
public function funkcja() {
-
$this->funkcjaWykonywana(); // Wykonaj metodę obiektu
-
}
-
public function funkcjaWykonywana() {
-
echo ‘Klasa 1′;
-
}
-
}
oraz
-
class Klasa2 {
-
public function glowna() {
-
Klasa1::funkcja(); // Wykonaj jako metodę statyczną
-
}
-
public function funkcjaWykonywana() {
-
echo ‘Klasa 2′;
-
}
-
}
Pytanie konkursowe brzmi co wyświetli się na stronie? Domyślacie się zapewne, że wynikiem działania tego skryptu będzie “Klasa 2″ (gdyby było inaczej post nie miałby sensu ;)). Z tego wynika, iż w klasie Klasa1 (klasie wywoływanej) mamy dostęp do instancji klasy Klasa2 (klasy wywołującej) za pomocą zmiennej $this - dziwne prawda? Nie radzę jednak korzystać z tego błędu (bo wątpię aby to było zamierzone) w projektach komercyjnych, tym bardziej, że żadna korzyść z tego nie wynika. Informację tą należy potraktować jako ciekawostkę do poczytania “przy kawie”.
Napisz komentarz