2016-08-11 2 views
1

터미널에서 실행해야하는 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"클래스 생성자에 있어요. 현재 오류가 발생하지 않았거나 데이터가 반환되었습니다.

+0

CLI 인수는'$ argv'를 통해 액세스 할 수 있습니다 ([docs] (http://php.net/manual/en/reserved.variables.argv.php) 참조). –

답변

1

클래스 정의가 명령 행에서 호출 될 때 PHP가 자동으로 생성자를 호출하지 않습니다. 이 같은 클래스의 인스턴스를 생성하는 스크립트의 맨 아래에 몇 가지 절차 적 코드를 추가해야합니다

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

명령 줄 인수는 스크립트 자체의 이름으로 시작하는 $argv 전역 변수에 나열되어 있습니다 인수 0. 오히려,

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

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

은 첫 번째 방법은 두 개의 입력 값에 따라 동적 속성을 초기화 할 수 있어야 :

는 (당신은 또한 여기에 사소한 구문 오류가있어) 두 개의 클래스 멤버 변수보다.