Я изучаю php oop и кажется, что я до сих пор не понимаю, как некоторые вещи работают как мой код, который, imo, выглядит правильно, не работает и возвращает несколько ошибок. Это код:Векторный расчет класс 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);
Ошибки я получаю: неопределенные переменные «х» и «у» на линии 42 (который составляет $ wekt = новый вектор ($ х, $ у);) и «Призыв к undefined метод Vector :: set() ".
Спецификация для этого класса:
два частных атрибутов $ х и $ у (кажется, нормально)
конструктор получает $ х и $ у и получать чеки, если они номера. Конструктор должен выводить сообщение только что созданного вектора.
Я не очень понимаю этот конструктор и, вероятно, это одна из причин, почему этот код не работает так, как он предназначен.
деструктор должен выводить информацию об уничтоженном объекте.
должны быть доступны функции для изменения значения $ х и $ у
должна быть доступна функция для возврата $ х
две дополнительные функции: одна Выведение сумма двух векторов, второй функция должна выводить скалярное произведение, которое принимает в качестве значения число.
'$ x' и' $ y' не существует в сферу, где вы делаете вызов 'нового вектора()' –
Существует нет 'set()' в вашем классе 'Vector', только методы для' setx() 'и' sety() ' –
http://php.net/variables.scope –