Ich lerne PHP-OOP und scheint wie ich immer noch nicht verstehen, wie einige Dinge funktionieren wie mein Code, der, imo, sieht nicht richtig aus und gibt wenige Fehler zurück. Dies ist der Code:Vector Berechnungen Klasse oop PHP
<?php
class Vector {
private $x;
private $y;
public function __construct($x, $y) {
if (is_nan($x) || is_nan($y)) {
$this->x = 0 && $this->y = 0;
} else {
$this->set($x, $y);
}
}
public function __destruct() {
var_dump($x, $y);
}
public function setx($x) {
if (is_numeric($x)) {
$this->x;
}
}
public function sety($y) {
if (is_numeric($y)) {
$this->y;
}
}
public function retLength() {
return $x;
}
public function addVector() {
$sum=$x+$y;
}
public function dotProduct() {
$dot_product = array_sum(array_map(function($x,$y) { return $x*$y; }, $array1, $array2));
}
}
$wekt= new Vector($x, $y);
echo $wekt->addVector(5,7);
Fehler i bekommen sind: nicht definierte Variablen "x" und "y" auf der Leitung 42 (die $ wekt = new Vector ($ x, $ y) ist;) und „Call to undefinierte Methode Vector :: set() ".
Spezifikation für diese Klasse ist:
zwei private Attribute $ x und $ y (scheint in Ordnung zu sein)
Konstruktor erhält x $ y $ und über die Kontrollen erhalten, wenn diese Zahlen. Der Konstruktor soll die Nachricht über den gerade erstellten Vektor ausgeben.
Destruktor soll Informationen über zerstörtes Objekt ausgeben.
sollte dort zur Verfügung stehenden Funktionen werden, um Werte von $ x und $ y
es sich ändern verfügbare Funktion $ x
zwei weitere Funktionen sein sollte zurückzukehren: eine Ausgabesumme von zwei Vektoren, zweiter Funktion soll Skalarprodukt ausgeben, das als Wert eine Zahl annimmt.
Ich verstehe nicht all diesen Konstruktor und wahrscheinlich ist dies einer der Gründe, warum dieser Code nicht so funktioniert, wie es beabsichtigt ist.
'$ x' und' $ y' nicht in dem Rahmen vor, wenn Sie den Anruf 'neuen Vector tun()' –
Es gibt keine 'set()' Methode in Ihrer 'Vector' Klasse, nur Methoden für' setx() 'und' sety() ' –
http://php.net/variables.scope –