Willkommen in der Webstatt Zum Webstatt Blog und Stories
Dustwolf Dustwolf am 09.12.06 20: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?

netcup.de Warum gibt es hier Werbung?
mab mab am 10.12.06 12: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 :D

Dustwolf Dustwolf am 10.12.06 14: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');

}

.......
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.

mab mab am 10.12.06 17: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.

Dustwolf Dustwolf am 10.12.06 18: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.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt