• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Konstruktoren in PHP

J

Jonny83

Gast
Schreib grad eine Klasse in PHP. Wenn ich für die Klasse einen zweiten Konstruktor definiere, bringt mir PHP die Fehlermeldung:

Fatal error: Cannot redeclare bla() in...
Seh ich das richtig, dass ich in PHP nicht mehrere (überladene) Konstruktoren definieren kann?

(Die PHP Doku konnte mir dazu nicht viel sagen)
 
<?php
class foo {
var $var;

function __construct($var) {
$this->var = $var;
echo "foo constructor<br />";
$this->echoVar();
}
function echoVar() {
echo $this->var."<br />";
}
}


class bar extends foo {
function __construct($var) {
echo "bar constructor<br />";
parent::__construct($var);
}
}

$foo = new foo("var");
unset($foo);
echo "<br /><br />";
$bar = new bar("var");
unset($bar);
?>



wenn ich deine frage nicht falsch verstanden hab, duerfte das eine antwort sein.
 
Nicht ganz das was ich suche - mal ein Beispiel:

class foo {

var $var;

function foo() {
$this->var = 'default';
}

function foo($var) {
$this->var = $var;

}
Ich will in der gleichen Klasse mehrere verschiedene Konstruktoren definieren.

Bin das von Java so gewohnt... - da ist es nämlich fast schon "normal", das man mehrere Konstruktoren verwendet.
 
Jonny83 am 16.08.2005 10:42 schrieb:
Nicht ganz das was ich suche - mal ein Beispiel:

class foo {

var $var;

function foo() {
$this->var = 'default';
}

function foo($var) {
$this->var = $var;

}
Ich will in der gleichen Klasse mehrere verschiedene Konstruktoren definieren.

Bin das von Java so gewohnt... - da ist es nämlich fast schon "normal", das man mehrere Konstruktoren verwendet.

man kann sowohl konstruktoren als auch normale methoden/funktionen nicht überladen.

edit: http://www.dynamicwebpages.de/50.tutorials.php?dwp_tutorialID=12&printerfriendly=ON&headline=Wozu%20Klassen%20%3F%20-%20Teil%202
da gibts nen workaround für das problem, aber inwiefern der in deinem fall praktikabel ist...

mfg S.
 
Sardaykin am 16.08.2005 11:00 schrieb:
man kann sowohl konstruktoren als auch normale methoden/funktionen nicht überladen.

Ok, danke! Das hat mich interesiert. Hab's jetzt für meinen Fall mit default-Werten mehr oder weniger 'gelöst', also function foo($var = 'Hallo')..., so erfüllt es zumindestens meine Erfordernisse.

Sollte mein nächstes Projekt wohl gleich mit JSP lösen :ugly:
 
Jonny83 am 16.08.2005 11:22 schrieb:
Sardaykin am 16.08.2005 11:00 schrieb:
man kann sowohl konstruktoren als auch normale methoden/funktionen nicht überladen.

Ok, danke! Das hat mich interesiert. Hab's jetzt für meinen Fall mit default-Werten mehr oder weniger 'gelöst', also function foo($var = 'Hallo')..., so erfüllt es zumindestens meine Erfordernisse.

Sollte mein nächstes Projekt wohl gleich mit JSP lösen :ugly:


vielleicht wird das ja nochmal eingeführt, php ist ja grad erst objektorientiert geworden :)
 
Zurück