Thomas Schmieder: cannot redeclare funktion(), Fehler gefunden

Beitrag lesen

Hallo Andreas,

$person ist nicht gesetzt:

$person["koerperteil"]["bein"][0]["links"]="zu kurz"; ist möglich.
Wenn aber ein Skalar durch
$person["koerperteil"]="keine"; vorher in das Element geschreiben wurde, funktioniert die obige implizite Neudeklaration nicht mehr. Es gibt dann äußerst ungewöhnliche Ergebnisse. Man kann das Problem durch zwischenzeitliches Überschreiben mit dem richtigen Typ beseitigen.

$person["koerperteil"]="keine";
...
$person["koerperteil"]=array();
$person["koerperteil"]["bein"][0]["links"]="zu kurz"; // nun gehts
Was absolut logisch ist, da Du versuchst ein Element eines Arrays zu verändern, welches es defintiv nicht gibt!

Das ist nicht das Problem. Wenn es nicht existiert, wird es von PHP angelegt. Siehe oben. Aber wenn in der Heirarchie des Elementes auf einer Ebene eines existiert und der Typ passt nicht, dann kann PHP die Typkonvertierung nicht selbständig durchführen.

In Manual steht das Funktionsnamen nur einmal vorkommen dürfen. Wenn man sich daran hält gibt es IMHO keine Probleme. Wenn ich Funktionen kapseln will verwende ich Klassen. Mit :: lassen sich die Funktionen ja auch aufrufen ohne die Klasse vorher zu instanzieren.

Das hatten wir auch eingehalten. Allerdings mochte PHP die "Kapselung" nicht. Hätte ja sowieso keine Wirkung gehabt. War ja nur der Schönheit des Quellcodes wegen.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.