Inizializzazione delle variabili in una classe php

di Anonimizzato18487 il
2 risposte
Hola forum di iprogrammatori...
lo so quanto può essere odioso chiedere circa la sintassi del linguaggio...ma ho un problema con questo pezzo di codice:

class Cesare{
//cifrario
var $alfabeto = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0','-','_','@','?','!','\'','<','>','$','%','&');
var $chiave;

//l'errore si trova qui
//numero delle lettere del "alfabeto" che sarebbe il cifrario(di cesare)
$numeroalfabeto=count(alfabeto);


// La chiave ?un valore numerico da 1 a 25
function Cesare($chiave){
if($chiave>$this->numeroalfabeto){
$this->chiave = $chiave % 73;
}else{
$this->chiave = $chiave;
eccetera eccetera.....


praticamente mi segna errore di sintassi nella dichiarazione e inizializzazione di $numeroalfabeto.
mentre se lo sostituisco con: "$numeroalfabeto=73;" non segnala nulla.

seconda domanda: usando "$numeroalfabeto=73;" come richiamo questa variabile dai metodi della classe? usando $this->numeroalfabeto mi sfasa tutto il codice...

ci ho provato a cercare su google ma non ci ho capito tanto...

p.s.: questa classe tratta di criptaggio e decriptaggio trovato su internet e modificata da me...funziona ma aggirando il problema qua sopra descritto. per chi vuole il codice sono + che contento di condividere. basta chiedere.
w opensource!

2 Risposte

  • Alura.

    1) Se non ricordo male "var" è deprecato (o quantomeno inutilizzato) da parecchie versioni fa di php. Meglio usare public/protected/private a seconda della disibilità che la variabile o la funzione richiedono.

    2) scrivere una "parola" senza $ davanti, in php, significa richiamare una costante.

    3) Infine, tu stai cercando di eseguire un count di una variabile che di fatto non esiste ancora.
    Vediamo se riesco a spiegarmi meglio:
    class pippo {
        public $pluto = 'a';
    }
    Quando scrivi questo nel file pippo.php, stai solo dicendo a php che quando verrà istanziato un oggetto appartenente alla classe pippo, questo avrà una variabile "pluto" di valore 'a'. Ma fino a quando non scriverai:
    $un_pippo = new pippo();
    quella variabile $pluto in verità non esisterà, sarà solo un pezzo di testo in un file, di conseguenza l'interprete php non potrà eseguirci operazioni.
    Quindi, come minimo, potrai fare:
    class pippo {
        public $pluto = array('a');
        private $count_pluto = 0;
    
        public function __construct() {
            $this->count_pluto = count($this->pluto);
        }
    }
    In questo modo, quando la classe verrà istanziata, php andrà a contare il numero di elementi della tua variabile e lo assegnerà all'altra.
  • Grazie emanuele sei stato molto esaustivo
Devi accedere o registrarti per scrivere nel forum
2 risposte