2016-05-27 29 views
-1

ich folgendes Problem:PHP Zugriff auf eine Variable innerhalb einer Funktion eines Objekts in einem Objekt dieses Objekts

Ich habe ein Objekt der Klasse ‚Server‘. Dieses Objekt hat die Variable $ ip und ein Array $ services []. Im Array ist ein Objekt der Klasse Service. Gibt es eine Möglichkeit, auf die Variable $ ip innerhalb einer Funktion des Service-Objekts zuzugreifen?

class Server 
{ 
    private ip; 
    private services = [new Service()]; 
} 

class Service 
{ 
    function checkServiceStatus() 
    { 
     connectToServer($IP); 
     // I need the IP of the Server it belongs to, in order to 
     // connect to the server and check its status 
    } 
} 

$WindowsServer = new Server(); 

Dies ist ein einfaches Codebeispiel für mein Problem. Es wäre schön, wenn ich auf die $ IP-Variable des Server-Objekts zugreifen könnte, zu dem das Service-Objekt gehört.

+0

Verwenden $ this-> ip ... – Fil

+2

Es hängt davon ab, wie Sie den Wert von 'ip' $ zu verwenden (was, warum mit einem Codebeispiel ist Ihre Frage ist nützlich). Wenn Sie eine Methode der Instanz von 'Service' aufrufen, die im Array von einer anderen Methode von 'Server' gehalten wird, können Sie '$ this-> ip' als Argument für diesen Methodenaufruf übergeben. Wenn Sie den Wert von "$ ip" als Attribut der "Service" -Instanz beibehalten, übergeben Sie ihn als Argument an den Konstruktor, wenn er zuvor im Array gespeichert wird (zB '$ services [] = new Service ($ this-> ip) '). –

Antwort

1

Umwandlung nur @jeyoung Kommentar zu Code:

class Server 
{ 
    private $ip; 
    private $services = []; 

    function __construct($ip) { 
     $this->ip = $ip; 
     $this->services[] = new Service($this->ip); 
    } 
} 

class Service 
{ 
    function __construct($ip) { 
     $this->ip = $ip; 
    } 

    function checkServiceStatus() 
    { 
     connectToServer($this->ip); 
     // I need the IP of the Server it belongs to, in order to 
     // connect to the server and check its status 
    } 
} 

$WindowsServer = new Server('127.0.0.1'); // for example 
+0

Sie vermissen den Konstruktor in 'Server' und Sie stellen $' ip' nicht auf 'new Service()'. –

+0

Danke, ich schrieb es zu schnell ... :-( – MarcoS

+0

Danke für die Antworten :), Ich hatte auch diese Lösung im Kopf, aber ich dachte, dass es vielleicht eine Möglichkeit geben würde, es jedes Mal direkt vom Serverobjekt zu lesen . Wenn also die Server-IP geändert wird, verwendet der Dienst auch die richtige IP-Adresse. –

Verwandte Themen