Visualizzazione risultati 1 fino 5 di 5
Like Tree1Likes
  • 1 Post By dreadnaut

Discussione: [PHP] Le variabili globali.

  1. #1
    Guest

    Question [PHP] Le variabili globali.

    Salve ragazzi, eccomi ancora con una nuova succulenta domanda.
    Sto strutturando il mio sito attraverso un modello classi.php -> paginacherichiama.php, mi spiego meglio.
    Prendiamo ad esempio una pagina php che richiama il nome del sito dal database ( è solo un esempio ).

    pagina_1.php
    Codice PHP:
    <?php

    include('classi.php');

    $db = new Database();
    $stampa = new Stampa;
    echo
    $stampa->nomesito;

    ?>
    classi.php
    Codice PHP:
    <?php

    class Database {

    tutta la connessione e bla bla


    }


    class
    Stampa {

    protected
    $db;

    public function
    nomesito() {
    $this->db = $GLOBALS['db'];
    $query = "SELECT nomesito FROM datisito";
    $results = $this->db->query($query);
    bla bla bla.... e continua.
    }

    ?>
    Sto seguendo questo modello, e devo dire che funziona tutto. Le mie domande sono:
    1. E' buona pratica usare le variabili globali? O è meglio se passo tutte le volte la variabile $db alle funzioni?
    2. Usare una sola pagina contenente tutte le classi del sito anzichè scriverle direttamente nelle pagine dove devono essere usate, è controproducente? Perchè io vedo che in questo modo ho una specie di centralizazzione e le pagine php mi risultano più leggibili e pulite.

    Grazie in anticipo!

  2. #2
    Guest

    Predefinito

    Raga faccio un up. Vorrei tanto delle risposte!

  3. #3
    Guest

    Predefinito

    Programmare a classi è decisamente più performante, pulito e tante altre qualità che la programmazione ad oggetti offre. Quello che mi sento di suggerirti è che l'uso delle variabili globali renderebbe a mio avviso, dopo aver letto alcune guide, il sito meno sicuro. Già solo nel GET avresti la possibilità di dichiarare variabili. Infatti, dopo alcune versioni di PHP hanno deciso di rendere questa impostazione disabilitata nel phpini

  4. #4
    Guest

    Predefinito

    Grazie Mille! ^_^

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Precisando quello che ha scritto andreahomepage sopra, le variabili globali possono essere create solo se php gira con l'opzione register_globals, da tempo disabilitata di default. Anche con questa opzione attivata, le variabili globali sono un rischio solo se scrivi codice sporco in cui utilizzi variabile senza avere inizializzate.

    Nel caso sopra
    Codice PHP:
    $db = new Database();
    $db->qualcosa();



    .
    non c'è nessuno rischio ad avere $db globale, perché il suo valore è sempre assegnato dalla prima riga.

    Detto questo, non è necessario neanche passare il database ad ogni singola funzione: puoi passarlo al costruttore della classe Stampa (aka Dependency Injection) e salvarlo in attributo della classe, oppure avere un metodo statico nella classe Database che ti permetta di recuperare la connessione al database senza crearne una nuova ogni volta (Single Instance o Singleton).
    Ultima modifica di dreadnaut : 17-01-2015 alle ore 15.07.43
    javascripter likes this.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •