Warning: Missing argument 1 for Auto::__construct(), called in E:\OpenServer\domains\test.ru\index.php on line 47 and defined in E:\OpenServer\domains\test.ru\index.php on line 7 Warning: Missing argument 2 for Auto::__construct(), called in E:\OpenServer\domains\test.ru\index.php on line 47 and defined in E:\OpenServer\domains\test.ru\index.php on line 7 Fatal error: Call to undefined function move() in E:\OpenServer\domains\test.ru\index.php on line 50 Код (Text): <?php class Auto{ protected $x; protected $y; public function __construct($x, $y){ $this->x = $x; $this->y = $y; } public function move($x, $y){ $this->strMove($x, $y); } protected function strMove($x, $y, $type = ""){ if ($type = "") echo "Двигаем автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; else echo "Двигаем $type автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; } } class Car extends Auto { public function __construct($x = 0, $y = 0){ parent::__construct($x, $y); } public function move($x, $y){ $this->strMove($x, $y, "легковой"); } } class Truck extends Auto { private $capacity; public function __construct($x = 0, $y = 0, $capacity = 500){ parent::__construct($x, $y); $this->capacity = $capacity; } public function move($x, $y){ $this->strMove($x, $y, "грузовой"); } } $auto = new Auto(); $car = new Car(); $truck = new Truck(); $auto = move(10,10); $car = move(10,10); $truck = move(10,10); ?>
Код (Text): Предупреждение: Отсутствует аргумент 1 для Auto :: __ construct (), вызванный в E: \ OpenServer \ domains \ test.ru \ index.php в строке 47 и определен в E: \ OpenServer \ domains \ test.ru \ index.php on Строка 7 Предупреждение: Отсутствует аргумент 2 для Auto :: __ construct (), вызванный в E: \ OpenServer \ domains \ test.ru \ index.php в строке 47 и определен в E: \ OpenServer \ domains \ test.ru \ index.php on Строка 7 Неустранимая ошибка: вызов неопределенной функции move () в E: \ OpenServer \ domains \ test.ru \ index.php в строке 50
Когда ты вызываешь метод Auto::__construct() ты ему не передаёшь всё обязательные аргументы. Тебе надо передать при вызове все обязательные аргументы
Ты передавать должен, как простая функция: $auto= new Auto($var, $var); У тебя указаны два аргумента, так и используй два, или сделай иначе, если у тебя один из аргументов должен быть по умолчанию 0, то PHP: function __constructor($x, $y='0') { //Тело конструктора. }
А что у тебя сейчас за ошибка? --- Добавлено --- Если ты про strMove, то тут с $type все нормально, ты присвоил по умолчание - пусто, там скорее та же проблема, зачем тебе в этой функции $x и $y?
Warning: Missing argument 1 for Auto::__construct(), called in E:\OpenServer\domains\test.ru\index.php on line 47 and defined in E:\OpenServer\domains\test.ru\index.php on line 7 Warning: Missing argument 2 for Auto::__construct(), called in E:\OpenServer\domains\test.ru\index.php on line 47 and defined in E:\OpenServer\domains\test.ru\index.php on line 7 Fatal error: Call to undefined function move() in E:\OpenServer\domains\test.ru\index.php on line 50 --- Добавлено --- координаты --- Добавлено --- Код (Text): <?php class Auto{ protected $x; protected $y; public function __construct($x = 0, $y = 0){ $this->x = $x; $this->y = $y; } public function move($x, $y){ $this->strMove($x, $y); } protected function strMove($x, $y, $type = ""){ if ($type = "") echo "Двигаем автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; else echo "Двигаем $type автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; } } class Car extends Auto { public function __construct($x = 0, $y = 0){ parent::__construct($x, $y); } public function move($x, $y){ $this->strMove($x, $y, "легковой"); } } class Truck extends Auto { private $capacity; public function __construct($x = 0, $y = 0, $capacity = 500){ parent::__construct($x, $y); $this->capacity = $capacity; } public function move($x, $y){ $this->strMove($x, $y, "грузовой"); } } $auto = new Auto(); $car = new Car(); $truck = new Truck(); $auto = move(10,10); $car = move(10,10); $truck = move(10,10); ?> Fatal error: Call to undefined function move() in E:\OpenServer\domains\test.ru\index.php on line 50
Код (Text): <?php class Auto{ protected $x; protected $y; public function __construct($x = 0, $y = 0){ $this->x = $x; $this->y = $y; } public function move($x, $y){ $this->strMove($this->x, $this->y); } protected function strMove($x, $y, $type = ""){ if ($type = "") echo "Двигаем автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; else echo "Двигаем $type автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; } } class Car extends Auto { public function __construct($x = 0, $y = 0){ parent::__construct($x, $y); } public function move($x, $y){ $this->strMove($x, $y, "легковой"); } } class Truck extends Auto { private $capacity; public function __construct($x = 0, $y = 0, $capacity = 500){ parent::__construct($x, $y); $this->capacity = $capacity; } public function move($x, $y){ $this->strMove($x, $y, "грузовой"); } } $auto = new Auto(); $car = new Car(); $truck = new Truck(); $auto = move(10,10); $car = move(10,10); $truck = move(10,10); ?> теперь Fatal error: Call to undefined function move() in E:\OpenServer\domains\test.ru\index.php on line 49 дальше тоже менять для легкового и грузового
PHP: public function move($x, $y) { $this->strMove($x,y); } //Зачем так делать? //////////////////////////////////////////////////////// // Вот такой: ///// public function move() { $this->strMove($this->x, $this->y); } public function strMove($x, $y, $type='') { if( empty($type) ) echo "Двигатель автомобиля из (".$x."; ".$y.")"; else echo "Двигаем ".$type." автомобиль из (".$x."; ".$y.")"; } --- Добавлено --- А, вон что, код не показывало весь --- Добавлено --- А тебя здесь ничего не смущает? [ PHP: <? $auth=new Auto(); $car = new Car(); $truck = new Truck(); $auto=move(10,10); $car=move(10,10); $truck=move(10,10); ?> --- Добавлено --- $auto->move(10,10); $car->move(10,10); $truck->move(10,10); --- Добавлено --- Верни как есть, я не доглядел код первоначальный. --- Добавлено --- Была ошибка вообще не в класcе, а в объявлении функции.
Она у него есть, он просто вызывает ее не правильно... $auto->move(10,10); А он вызывает: $auto=move(10,10);
ошибка в коде Parse error: syntax error, unexpected 'protected' (T_PROTECTED) in E:\OpenServer\domains\test.ru\index.php on line 14 PHP: <?php class Auto{ protected $x; protected $y; public function __construct($x = 0, $y = 0){ $this->x = $x; $this->y = $y; } public function move($x, $y){ $this->strMove($x, $y); protected function strMove($x, $y, $type = ""){ if ($type == "") echo "Двигаем автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; else echo "Двигаем $type автомобиль из (".$this->x.";".$this->y.") в (".x.";".y.")<br/>"; } } class Car extends Auto { public function __construct($x = 0, $y = 0){ parent::__construct($x, $y); } public function move($x, $y){ $this->strMove($x, $y, "легковой"); } } class Truck extends Auto { private $capacity; public function __construct($x = 0, $y = 0, $capacity = 5000){ parent::__construct($x, $y); $this->capacity = $capacity; } public function move($x, $y){ $this->strMove($x, $y, "грузовой"); } } $auto = new Auto(); $car = new Car(); $truck = new Truck(); $auto->move(10,10); $car->move(10,10); $truck->move(10,10); ?>
Поменяй область видимости с proteced на public здесь: PHP: protected function strMove($x, $y, $type = ""){
- открываем основной файл конфигурации SSH-сервера для редактирования (sshd_config) Код (Text): sudo nano /etc/ssh/sshd_config - корректировка sshd_config: * измененяем стандартный порт 22 на любой другой, к примеру 2222 Код (Text): Port 2222