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
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
Ich möchte eine Klasse aufrufen und ihr einen Wert übergeben, damit er innerhalb dieser Klasse verwendet werden kann
Das Konzept wird als "Konstruktor" bezeichnet.
Wie die anderen Antworten zeigen, sollten Sie die die einheitliche Konstruktorsyntax ( __construct()
) ab PHP 5. Hier ist ein Beispiel, wie dies aussieht:
class Foo {
function __construct($init_parameter) {
$this->some_parameter = $init_parameter;
}
}
// in code:
$foo = new Foo("some init value");
Hinweis - Es gibt so genannte Konstruktoren im alten Stil, auf die man im Legacy-Code stoßen kann. Sie sehen wie folgt aus:
class Foo {
function Foo($init_parameter) {
$this->some_parameter = $init_parameter;
}
}
Dieses Formular ist ab PHP 7 offiziell veraltet und Sie sollten es nicht mehr für neuen Code verwenden.
In neueren PHP-Versionen (5 und höher) wird die Funktion __constuct immer dann aufgerufen, wenn Sie "new {Object}" verwenden. Wenn Sie also Daten an das Objekt übergeben wollen, fügen Sie der construct-Funktion Parameter hinzu und rufen dann
$obj = new Object($some, $parameters);
class Object {
function __construct($one, $two) {}
}
Benannte Konstruktoren werden in PHP zugunsten der Methode __construct abgeschafft.
class SomeClass
{
public $someVar;
public $otherVar;
public function __construct()
{
$arguments = func_get_args();
if(!empty($arguments))
foreach($arguments[0] as $key => $property)
if(property_exists($this, $key))
$this->{$key} = $property;
}
}
$someClass = new SomeClass(array('someVar' => 'blah', 'otherVar' => 'blahblah'));
print $someClass->someVar;
Das bedeutet auf lange Sicht weniger Wartungsaufwand.
Die Reihenfolge der übergebenen Variablen ist nicht mehr wichtig, (keine Standardwerte mehr wie 'null': someClass(null, null, true, false))
Das Hinzufügen einer neuen Variablen ist weniger mühsam (man muss die Zuweisung nicht in den Konstruktor schreiben)
Wenn Sie sich die Instanziierung der Klasse ansehen, wissen Sie sofort, worauf sich die übergebenen Variablen beziehen:
Person(null, null, true, false)
gegen
Person(array('isFat' => true, 'canRunFast' => false))
So mache ich meine
class MyClass {
public variable; //just declaring my variables first (becomes 5)
public variable2; //the constructor will assign values to these(becomes 6)
function __construct($x, $y) {
$this->variable = $x;
$this->variable2 = $y;
}
function add() {
$sum = $this->variable + $this->variable2
return $sum;
}
} //end of MyClass class
Erstellen Sie eine Instanz und rufen Sie dann die Funktion add
$myob = new MyClass(5, 6); //pass value to the construct function
echo $myob->add();
11 wird auf die Seite geschrieben Dies ist kein sehr nützliches Beispiel, da man lieber einen Wert an add übergibt, wenn man es aufruft, aber es veranschaulicht den Punkt.
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.