Передача аргументов при инициализации объекта через терминал

Я пытаюсь передать аргументы в скрипт 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;

Первый способ будет инициализировать динамические свойства на основе значения двух входных данных, а не двух переменных членов класса.)

Другие вопросы по тегам