通过终端传递对象初始化的参数

时间:2016-08-11 14:47:31

标签: php bash terminal

我正在尝试将参数传递给需要在终端上执行的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 个答案:

答案 0 :(得分:1)

从命令行调用类定义时,PHP不会自动调用构造函数。您需要在脚本底部添加一些过程代码来创建类的实例,如下所示:

$test = new test($argv[1], $argv[2]);

命令行参数列在$argv全局变量中,从参数零中脚本本身的名称开始。

(你这里也有一个小的语法错误:

$this->$IDsOne = $IDsOne;
$this->$IDsTwo = $IDsTwo;

应该是

$this->IDsOne = $IDsOne;
$this->IDsTwo = $IDsTwo;

第一种方法是根据两个输入的值而不是两个类成员变量来初始化动态属性。)