44 Stimmen

Wie würde man in php beim Initialisieren einer Klasse eine Variable an diese Klasse übergeben, die in ihren Funktionen verwendet werden soll?

Es geht also um Folgendes. Ich möchte eine Klasse aufrufen und einen Wert an sie übergeben, so dass es innerhalb dieser Klasse in allen verschiedenen Funktionen ect. ect verwendet werden kann. Wie würde ich vorgehen, um das zu tun?

Danke! Sam

0voto

Chris Cox Punkte 610

Ich glaube, jeder übersieht hier das Offensichtliche. Ja, der PHP4-Konstruktor ist veraltet, aber Sie können Ihre Klasse so schreiben, dass sie abwärtskompatibel ist:

class myClass {

    var $myVar;

    function myClass { // PHP4 constructor, calls PHP5 constructor
        $this->__construct();
    }

    function __construct() { // PHP5 constructor
        doSomeStuff($myVar);
    }
}

-1voto

Chris Punkte 15

Wow, ich kann die Antworten hier nicht glauben! Sie werden alle funktionieren, sind aber falsch. Der richtige Weg, die Variablen zu setzen, ist durch einen Getter und Setter, dies ermöglicht es Ihnen, Ihre Variablen ordentlich zu setzen und Prüfungen etc. durchzuführen.

class myClass {

    private $myVar;

    public function set_var($var) {  // You can then perform check on the data etc here
       $this->myVar = $var;
    }

    function __construct() { // PHP5 constructor

    }

    public function do_something() {
        echo "blah";
    } 

}

Dies ermöglicht es Ihnen, das Objekt korrekt aufzurufen, z. B.

$objNew = new myClass();
$objNew->set_var("Set my variable");
$objNew->do_something();

Das ist die saubere Art, es zu tun, und bei großen Projekten und Skripten werden Sie froh darüber sein. Ich habe dieses Problem gerade mit dem Skript eines anderen, das nicht einfach aktualisiert werden kann, weil es auf die andere Art geschrieben wurde, die auf dieser Seite erwähnt wird.

Außerdem können Sie eine unbegrenzte Anzahl von Variablen für die Klasse haben, ohne dass ein dummer Aufruf an das Objekt erforderlich ist, z. B.

$objNew = new myClass("var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1");

Dies ist im Grunde nicht eindeutiger als die Verwendung einer Funktion.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X