Передача аргументов при инициализации объекта через терминал
Я пытаюсь передать аргументы в скрипт PHP, который должен быть выполнен на терминале.
test.class.php
class test {
// ID's param for query thread
private $IDsOne;
private $IDsTwo;
/* __construct
* Constructor called on object initilization
*/
public function __construct($IDsOne, $IDsTwo) {
$this->$IDsOne = $IDsOne;
$this->$IDsTwo = $IDsTwo;
$this->output();
}
public function output() {
// check if object attributes set?
var_dump($this->IDsOne);
var_dump($this->IDsTwo);
}
}
на терминале:
> php test.class.php 0 100
Я пытаюсь передать аргументы "0" и "100" в конструктор класса. Я не получаю никаких ошибок или возвращенных данных.
1 ответ
PHP не вызывает автоматически конструктор, когда определение класса вызывается из командной строки. Вам нужно добавить процедурный код внизу скрипта, чтобы создать экземпляр класса, например так:
$test = new test($argv[1], $argv[2]);
Аргументы командной строки перечислены в $argv
глобальная переменная, начиная с имени самого скрипта в нулевом аргументе.
(Здесь также есть небольшая синтаксическая ошибка:
$this->$IDsOne = $IDsOne;
$this->$IDsTwo = $IDsTwo;
который должен быть
$this->IDsOne = $IDsOne;
$this->IDsTwo = $IDsTwo;
Первый способ будет инициализировать динамические свойства на основе значения двух входных данных, а не двух переменных членов класса.)