phpbar.de logo

Mailinglisten-Archive

[php] Method from Class from Class from Class

[php] Method from Class from Class from Class

Sebastian Mendel lists at sebastianmendel.de
Die Mai 6 17:02:38 CEST 2008


P. Genna Privat schrieb:
> Sebastian Mendel schrieb:
>> P. Genna Privat schrieb:
>>   
>>> Im Kopf macht es Sinn,
>>> aber warum gehts trotzdem nicht?
>>> Code selbsterklärend:
>>>
>>> <?php
>>> class main {
>>>     public function set($class){
>>>         $this->$class = new $class;
>>>     }
>>> }
>>>
>>> class math{
>>>     public function add($a, $b){
>>>         return $a + $b;
>>>     }
>>> }
>>>
>>> class view extends main {
>>>     public function show($a, $b){
>>>         echo $this->math->add($a, $b);
>>>     }
>>> }
>>> $run = new main;
>>> $run->set("math");
>>> $run->set("view");
>>> $run->view->show(5,6);
>>>     
>> $run->view->math gibt es nicht! sondern nur $run->math
>>
>> weil in $run->view kein $this->math ($run->view->math) existiert
>>
>> dies hast du oben in $run erzeugt, aber nicht in $run->view
>>
>>   
> Also die Idee war folgende:
> 
> 'math' verwaltet alle objekte da es sie ja mit 'add' in die 
> Eigenschaften lädt.
> Ein abruf mit '$run->math->add(5,6);' funktioniert was zeigt das der 
> Gedanke Früchte trägt.
> Was aber wenn andere Objekte auf wiederum andere Objekte zugreifen 
> müssen während ich sie rufe?
> Die Methode 'show' von 'view' zum Beispiel.
> Für den Fall, so dachte ich zumindest, benutze ich 'extends main' da 
> dadurch ja der Zugriff auf die Eigenschaften des Oberobjektes 'main' 
> möglich sein soll wo 'math' residiert.

1. Klassen !== Objekte

"extends" erweitert eine Klasse, aber nicht zur Laufzeit ein Objekt


d. h. die Klasse 'view' ist eine Erweiterung der Klasse 'main' hat also 
alles von ihr geerbt, das Objekt 'view' steht aber in keinem Zusammenhang 
mit dem Objekt 'main'


-- 
Sebastian Mendel

php::bar PHP Wiki   -   Listenarchive