Autor | Zpráva | ||
---|---|---|---|
Gavier Profil |
#1 · Zasláno: 31. 3. 2013, 14:47:52
Dobrý den,
mám dotaz ohledně přiřazení super globální proměnné do atributu funkce v kodu jako tento: class myclass{ #atributes public $verbose=false; private $defaultIp=$_SERVER['REMOTE_ADDR']; function someFunc($ip=self::$defaultIp){ ... } Parse error: syntax error, unexpected '$_SERVER' (T_VARIABLE) |
||
Joker Profil |
Gavier:
Problém není v $_SERVER nebo v superglobální proměnné, ale v tom, že atribut třídy lze inicializovat jen konstantou. Takže to výše uvedené není možné. Bylo by možné to nastavit v konstruktoru třídy, což ovšem koliduje s další věcí, a sice že když se ten atribut používá způsobem function someFunc($ip=self::$defaultIp) , měl by být statický.
Dodatek: Možná nejelegantnější by bylo místo atributu mít metodu třeba getDefaultIp |
||
Tori Profil |
#3 · Zasláno: 31. 3. 2013, 15:00:00
Vysvětlení: http://www.php.net/manual/en/language.oop5.properties.php , první odstavec.
Můžete té vlastnosti přiřadit hodnotu v konstruktoru. Ještě lepší by bylo tu IP předat třídě zvenčí (konstruktoru nebo přes setter). |
||
Gavier Profil |
#4 · Zasláno: 31. 3. 2013, 20:19:49
Děkuji oběma za rady. Zkoušel jsem inicializaci skrze konstruktor a vše funguje.
class myClass{ public $var; public function __construct() { $this->var=$_SERVER['REMOTE_ADDR']; } public function echoThis(){ $this->var.=":80"; echo $this->var; } } Pokud bych chtěl atribut nastavit jako defaultní hodnotu při deklaraci metody, musel bych to udělat jak? |
||
joe Profil |
#5 · Zasláno: 31. 3. 2013, 22:31:05
Já bych to udělal nějak takto:
public function echoThis($var = NULL) { if ($var === NULL) { $var = $this->var; } echo $var; } |
||
Časová prodleva: 11 let
|
0