2010-12-17 6 views
0

Ich hatte dies:Nur Variable als Verweis übergeben kann - opensocket Ausgabe

final public function __construct() 
{ 
    $this->_host = 'ssl://myserver.com'; 
    $this->_porto = 700; 
    $this->_filePointer = false; 

    try 
    { 
    $this->_filePointer = fsockopen($this->_host, $this->_porto); 
    if ($this->_filePointer === FALSE) 
    { 
     throw new Exception('Cannot place filepointer on socket.'); 
    } 
    else 
    { 
     return $this->_filePointer; 
    } 

} 

catch(Exception $e) 
{ 
      echo "Connection error: " .$e->getMessage(); 
} 

} 

Aber ich möchte eine Timeout-Option für diese Klasse hinzufügen, so habe ich hinzugefügt:

final public function __construct() 
{ 
    $this->_host = 'ssl://myserver.com'; 
    $this->_porto = 700; 
    $this->_filePointer = false; 
    $this->_timeout = 10; 

    try 
    { 
    $this->_filePointer = fsockopen($this->_host, $this->_porto, '', '', $this->_timeout); 
    if ($this->_filePointer === FALSE) 
    { 
     throw new Exception('Cannot place filepointer on socket.'); 
    } 
    else 
    { 
     return $this->_filePointer; 
    } 

} 

catch(Exception $e) 
{ 
      echo "Connection error: " .$e->getMessage(); 
} 

} 

I‘ Ich bekomme einen Fehler mit den Worten: "Nur Variablen können durch Referenz übergeben werden."

Was ist los?

Update: Der Fehler: "Nur Variablen können als Referenz übergeben werden" auf dieser Linie bezogen werden:

$this->_filePointer = fsockopen($this->_host, $this->_porto, '', '', $this->_timeout); 

Vielen Dank, MEM

+1

(seufz) * In welcher Zeile * erhalten Sie den Fehler? –

+0

@ Pekka - Danke. Ich habe meine Frage aktualisiert. PS- Brauche ich diese, dort? – MEM

Antwort

3
fsockopen (string $hostname [, int $port = -1 [, int &$errno [, 
      string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]]) 

Die &$errno und Parameter werden als Referenz übergeben. Sie können dort keine leere Zeichenfolge '' als Argument verwenden, da dies keine Variable ist, die als Referenz übergeben werden kann.

Geben Sie einen Variablennamen für diese Parameter, auch wenn Sie nicht an ihnen interessiert sind (die Sie sollten, obwohl sein):

fsockopen($this->_host, $this->_porto, $errno, $errstr, $this->_timeout) 

Vorsicht nicht vorhandenen Variablen mit dem gleichen Namen überschreiben.

Verwandte Themen