Ciao.
Sto modificando una vecchia classe realizzata da me a suo tempo, che funzionava benissimo. ( E perché l'hai modificata? Sperimentare sempre )
Dunque, ho iniziato a modificare tutti i suoi metodi per portarli a statici, niente di che in realtà, sono solo due, quindi detto fatto, e sono inizati i problemi.
All'interno del primo metodo getDomanda() interagisco con un array di domande, implementato come privato.
All'inizio usavo correttamente $this all'interno del metodo, ma passando a private ha iniziato a darmi un errore.
Il metodo era richiamato con il classico $oggetto = new classe(); $oggetto->getDomanda(); ma passando a static ho iniziato a usare Classe::getDomanda(); ed è subito comparso l'errore: Uncaught Error: Using $this when not in object context in...
Così l'ho modificato da $this->domanda a self::domanda e pensavo di essere riuscito a risolvere il problema, ma nulla, è solo cambiato il messaggio di errore, da quello di prima a questo Uncaught Error: Undefined class constant 'domanda' in... ma domanda è un array private in cima alla classe.
Francamente non so risolvere il proble al momento.
Vi metto un po' di codice sperando di avere un aiuto da parte vostra.
Richiamando la classe e quindi la funzione con $captcha = Captcha::getDomanda('it'); dovrebbe riportare la domanda e la risposta nella variabile $captcha, ma in realtà dopo la modifica va in errore.
EDIT
Modifica: avevo sbagliato semplicemente dimenticando il dollaro davanti alla variabile dopo il self.
Quindi diventa self::$domanda.
Bene, ora l'errore diventa: Uncaught Error: Access to undeclared static property: Captcha::$domanda... che dovrei risolvere dando lo static anche alle varibabili, vi faccio sapere.
Sto modificando una vecchia classe realizzata da me a suo tempo, che funzionava benissimo. ( E perché l'hai modificata? Sperimentare sempre )
Dunque, ho iniziato a modificare tutti i suoi metodi per portarli a statici, niente di che in realtà, sono solo due, quindi detto fatto, e sono inizati i problemi.
All'interno del primo metodo getDomanda() interagisco con un array di domande, implementato come privato.
All'inizio usavo correttamente $this all'interno del metodo, ma passando a private ha iniziato a darmi un errore.
Il metodo era richiamato con il classico $oggetto = new classe(); $oggetto->getDomanda(); ma passando a static ho iniziato a usare Classe::getDomanda(); ed è subito comparso l'errore: Uncaught Error: Using $this when not in object context in...
Così l'ho modificato da $this->domanda a self::domanda e pensavo di essere riuscito a risolvere il problema, ma nulla, è solo cambiato il messaggio di errore, da quello di prima a questo Uncaught Error: Undefined class constant 'domanda' in... ma domanda è un array private in cima alla classe.
Francamente non so risolvere il proble al momento.
Vi metto un po' di codice sperando di avere un aiuto da parte vostra.
PHP:
class Captcha implements iCaptcha
{
private static $domanda = [
'it' => [
'qual è il colore del limone?',
'qual è il colore dell\'arancia?',
],
'en' => [
'what is the color of lemon?',
'what is the color of orange fruit?',
]
];
private $risposta = [
'it' => [
'giallo',
'arancione',
],
'en' => [
'yellow',
'orange',
]
]
public static function getDomanda( string $lingua) {
$conto = count( self::domanda[$lingua] ) - 1; // Punto in cui va in errore
$chiave = mt_rand( 0, $conto );
return $this->domanda[$lingua][$chiave] . '§' . $this->risposta[$lingua][$chiave];
}
// ........ c'è pure una getRisposta() ma per ora non serve dato che usa le stesse variabili, spero che le risposte per la prima valgano anche per la seconda.
}
Richiamando la classe e quindi la funzione con $captcha = Captcha::getDomanda('it'); dovrebbe riportare la domanda e la risposta nella variabile $captcha, ma in realtà dopo la modifica va in errore.
EDIT
Modifica: avevo sbagliato semplicemente dimenticando il dollaro davanti alla variabile dopo il self.
Quindi diventa self::$domanda.
Bene, ora l'errore diventa: Uncaught Error: Access to undeclared static property: Captcha::$domanda... che dovrei risolvere dando lo static anche alle varibabili, vi faccio sapere.
Ultima modifica: