2015-09-23 16 views
6

fornisce a un errore:classe di riferimento PHP da variabile con accesso metodo statico

$this->model::byUserPermission() 

Leads to: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) 

Works:

$facade = $this->model; 
$facade::byUserPermission() 

Si tratta di un bug di PHP? Oppure qualcuno può spiegarlo al mio, perché sta accadendo (sto usando php 5.6 e sono nuovo a php. Dal mio punto di vista, entrambi sono esattamente gli stessi). Grazie

+0

Interessante. Forse '::' ha una precedenza più alta di '->', nel qual caso il codice verrà eseguito come '$ this -> (model :: byUserPermission())', che non sarebbe valido, dal momento che chiama un metodo su un la costante non dichiarata non ha molto senso. Puoi provare a eseguire '($ this-> model) :: byUserPermission()'? Penserei che valuterà le cose nell'ordine giusto. – GolezTrol

+0

grazie per il tuo aiuto! comunque questo è qualcosa che ho provato prima di postare e questo dà lo stesso errore di cui sopra ... e ($ facade) :: byUserPermission dà anche un errore. –

risposta

2

Il problema è che questa affermazione $this->model::byUserPermission() è ambigua. E può essere interpretato in diversi modi.

1) Si potrebbe provare a utilizzare la proprietà model della classe in cui ci si trova per chiamare il metodo statico di una classe. Come stai provando nella tua domanda.

2) Si può anche significare che si desidera accedere alla proprietà della classe restituita dalla funzione statica byUserPermission() nella classe model.

Problemi correlati