Webstatt.org - Community seit 2006 - 2012 (2024?)

Fehler in Objekten

Avatar user-168
09.12.2006 19:10

Moin.

Ich habe ein Templatescript geschrieben, wo ich zwei Objekte habe. Ein Objekt für das eigentliche Template und ein Objekt für Subtemplates.

Nun möchte ich beide Objekte kleiner gestalten, indem ich Methoden in eine übergeordnete Class auslagere, die in beiden Objekten benutzt werden.

Leider meckert er dann rum, dass darin verwendete Methoden, etc nicht vorhanden seien. Sind die ja auch nicht, aber die stehen immerhin in den anderen Objekten (class template extends templates), die dann damit was anfangen könnten.

Die Zusammenfassungs-Class rufe ich gar nicht alleine auf. Wieso werden da also fehlende Verknüpfungen dann als Fehler betrachtet und das Script abgebrochen?

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-236
10.12.2006 11:33

Hi,

mh, das kann jetzt natürlich an mehreren dingen liegen.
wenn du die objekte erstellst, dann müsste es somit aber funktionieren

<?php

// klasse möbel.....

class Moebel
{
.......
function setColor{}
}

// klasse tische

class Tisch extends Moebel
{
...
}

//objekte

$tisch =& new Tisch;
$tisch->setColor(brown);

?>


P.S.: das beispiel mit den Möbeln ist doof, aber ist mir grad eingefallen, wenn ich meinen belagerten schreibtisch so anschaue Fettes Grinsen

signature in progress
Avatar user-168
10.12.2006 13:48

Das klappt so sicherlich.Aber:

<?php

// klasse möbel.....

class Moebel
{
private $tische;
# Wobei Tische jeweils wiederum Objekte sind

function tischname ($name){

$this->tische['tisch1']->name('Neuer Name'zwinkern;

}

.......
function setColor{}
}

// klasse tische

class Tisch extends Moebel
{

# Hier steht eine Funktion, die in dem Array Tische Objekte ablegt, die dann wiederum die Methode name() haben.

...
}

//objekte

$tisch =& new Tisch;
$tisch->setColor(brown);

?>


Dann würde er mir das Script abbrechen mit der Begründung: Element in Moebel ist kein Objekt. Dabei rufe ich die Class gar nicht alleine auf. Und wenn ich sie über die Unterklasse aufrufe, würde er da ja vorher Objekte in das Array reinschreiben.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-236
10.12.2006 16:49

mh komisch. ich versteh auch nicht ganz was du machen möchtest. hast du deine klassen schon der einfachheit halber mit einer methode getestet?

Ich bin in PHP5 noch nicht wirklich fit, aber es ist ja klar, dass die protected und private eigenschaften ausgelassen werden. Du könntest dir deswegeb einen eigenen Iterator zusammenbasteln, der zu deiner Klasse gehört. Dein einfaches array ist zwar im Grunde auch ein Iterator, aber kein echtes Objekt! Ich muss mal googln, dann kann ich dir vielleicht ein kleines Beispiel liefern.

signature in progress
Avatar user-168
10.12.2006 17:32

Naja, um es simpel zusammen zu fassen:

Ich möchte mehrere Objekte anlegen und alle mehrfach verwendeten Methoden eben in eine zentrale Class auslagern.
Auch wenn diese zentrale Class niemals alleine aufgerufen wird, testet er deren Korrektheit und meckert rum.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche