2016-08-11 4 views
1

Ich versuche Argumente an ein PHP-Skript übergeben, die auf dem Terminal ausgeführt werden müssen.Übergabe von Argumenten auf Objekt Initialisierung über Terminal

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); 
     } 
} 

auf Terminal:

> php test.class.php 0 100 

Ich versuche, die Argumente "0" und "100" auf die Klasse Konstruktor übergeben. Ich bekomme aktuell keine Fehler oder gab Daten zurück.

+0

CLI-Argumente sind über '$ argv' zugänglich ([siehe docs] (http://php.net/manual/en/reserved.variables.argv.php)) –

Antwort

1

PHP ruft den Konstruktor nicht automatisch auf, wenn eine Klassendefinition über die Befehlszeile aufgerufen wird. Sie müssen einige prozeduralen Code am unteren Rand des Skripts fügen Sie eine Instanz der Klasse zu erstellen, wie folgt aus:

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

Kommandozeilenargumente in die globalen Variablen aufgelistet sind, mit dem Namen des Skripts beginnt, sich im Argument Null.

(Sie haben auch einen kleinen Syntaxfehler hier:

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

die

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

Der erste Weg dynamische Eigenschaften, sondern wird initialisiert basierend auf dem Wert der beiden Eingänge sein sollte als die zwei Klassen-Member-Variablen.)

Verwandte Themen