Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 33
  1. #21
    ma l'uso di "parent" nella classe figlia no??

    Codice PHP:
    class Classe2 extends Classe1 {

        public function 
    foo($sql){
           
            if (
    parent::contaRighe($sql) == 1)
                echo 
    "siii funziona anche in classe 2";
            else
                echo 
    "non funziona";
        }
        

    comunque non è ben progettata la cosa
    Questa volta, più che un voto.. è favoreggiamento.

  2. #22
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Maronna che casino.......

    Ci sono alcuni problemi di fondo, proprio riguardo OOP, ereditarietà, utilizzo delle superglobals e di progettazione architetturale del sistema.

    metodi come :
    codice:
        /*====================================
         * Setto la sessione per accedere 
         * all'area privata
         *==================================*/
        public function set_username($logkey){
            return $_SESSION['logkey'] = $logkey;
        }
    Non ha senso, avere un metodo che ti da un dato di cui hai lo scope ovunque, avrebbe senso
    se logkey fosse un attributo interno della classe. Fatto cosi' non serve a nulla.
    1- non esegue alcun codice di controllo esistenza sessione o dato in sessione
    2- lo scope di $_SESSION e' globale e puoi accedere a tale dato da qualsiasi posizione
    3- e' dichiarato come "SET" ... i metodi se non dovrebbero resituire nulla, se fai ritornare qualcosa, o ritorni un booleano (nel tuo caso ritorni una assegnazione che e' sempre true e quindi non serve a niente) oppure il valore settato giusto per controllo.... ma anche in questo caso dovresti avere il metodo "GET" per cui non va bene


    codice:
       
        /*====================================
         * Verifica lo stato del login
         *==================================*/
        public function is_logged($logkey){
            //if ( isset(get) )
        }
    ???????????????? Anche qui non ha senso il controllo commentato...

    codice:
       
        
        /*====================================
         * Effettuo il logout
         *==================================*/
        public function logout(){
            session_unset();
            session_destroy();
            header("location: ".$this->urls['login_page']."message=13");
        }
    NO! esegui un redirect non controllato e non bloccante. header("location") esegue il redirect si ma non esegui un "exit" o un "die" come successiva istruzione lo script continua l'esecuzione con risultati incoerenti. Ed anche eventuale redirect fallati.
    Inoltre passare tutto il testo del messaggio in get... lo trovo problematico e' meglio se ti passi il codice, quindi includi il file che associa codici ai testi.

    codice:
       
       
        
        /*====================================
         * Link alla pagina privata
         *==================================*/
        public function get_link_private(){
            header("location: ".$this->urls['private_page']);
            return;
        }
    stesso problema di sopra. In aggiunta la chiamata a return non risolve il problema in quanto chiude l'esecuzione del metodo e non dello script. Inoltre un metodo che chiama die o exit va ponderato bene in quanto termina in toto l'esecuzione. Io farei una classe statica per gestire i redirects in modo che hai il controllo di queste operazioni.

    Come vedi c'e' moltissima confusione, unitamente a come imposti le varie classi, relative estensioni e cosa devono fare. Per di piu' non applichi alcun pattern per cui ti perdi a mescalre controllers con model etc.......

    Consiglio di fermarsi subito e riprogettare tutto solo dopo aver testato e appreso bene come funziona OOP.

    imposta una struttura dati per codici-> messaggi

    imposta una classe che esegua solamente le queries a database, tale classe (statica o dinamica che sia) non fa altro che fornire il layer ed interfaccia per le connessioni al db e la gestione delle query. (studia bene come operano le funzioni msql/i_query() i valori ritornati etc e imposta correttamente i controlli per discriminare i risultati ( una query errata e' differente da una select che non da risultati)

    imposta correttamente le classi per gestire il login, l'utente etc.... qui puoi fare in vari modi.
    E nel caso li vediamo poi.

    In ogni caso fermati e rivedi completamente tutto.

  3. #23
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Innanzitutto grazie per la risposta.

    Inoltre, ritornando al discorso della "single responsibility", il costruttore in questo caso, si occuperà semplicemente di inizializzare le variabili che ho definito nella classe Database, mentre dovrò fare a parte un metodo per connettermi al database giusto?

    Se si, va bene come ho scritto nel post precedente???
    Con i sogni possiamo conoscere il futuro...

  4. #24
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Originariamente inviato da gaten
    Inoltre, ritornando al discorso della "single responsibility", il costruttore in questo caso, si occuperà semplicemente di inizializzare le variabili che ho definito nella classe Database, mentre dovrò fare a parte un metodo per connettermi al database giusto?
    Dovrai fare una classe a parte per connetterti al database.

  5. #25
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Addirittura una classe a parte per la connessione al database???
    Con i sogni possiamo conoscere il futuro...

  6. #26
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Originariamente inviato da gaten
    Addirittura una classe a parte per la connessione al database???
    se vuoi sviluppare oop, non puoi assolutamente fare economia di classi: le classi non si pagano un tanto al chilo, ne devi usare una per ogni singola cosa da fare (questo vuol dire "single")

  7. #27
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Su questo sono più che d'accordo con te, però qui il metodo CONNETTITI_AL_DATABASE(per esempio) è strettamente collegato al database, non sò se mi sono spiegato.
    Connettersi al database è un comportamento e quindi potrebbe benissimamente essere un metodo della classe Database.
    Con i sogni possiamo conoscere il futuro...

  8. #28
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    ma capisci che ha poco senso che tu passi un oggetto database (che piuttosto dovrebbe essere un oggetto connessione, per essere chiari) che non sia ancora connesso. Per il cui il metodo che esegue la connessione deve stare nella classe connessione, la cui istanza viene passata al costruttore della classe che esegue le query.

  9. #29
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    gaten fermati. non proseguire oltre.

    Butta via tutto e ricomicia da capo.

    Studiati bene come funziona ereditarietà e polimorfismo, nonche overloading.
    Ma non solo a livello tecnico-sintattico, anche a livello concettuale.

    Ci sono contesti dove estendere le classi e' una cosa utile e usabile, e altri(come nel tuo caso) dove non serve a nulla, crea solo confusione, rende il codice complesso e assolutamente ingestibile.

    Riprogetta da 0 tutto il class-tree cosi' come' non va... non serve a nulla e ti sta facendo impazzire.

    Semplifica, e atomizza() il piu' possibile. Il database gestisce solo il db. La classe utente e' solo 1 struttura dati mentre la classe loginManager si occuperà di gestire i controlli relativi ai dati utente.

    Ti consiglio vivamente di studiare qualcosa di design pattern, puoi inziare da MVC ( aka MCV) o factory per questo tuo progetto.

    Solo quando avrai ben chiaro come gestire tutte queste cose potrai scrivere delle classi utili. Ma ad ora vedo solo tantissima confusione e una fase di sviluppo a livello copy->paste->edit -> try -> error -> goto(edit)

    usare le classi puo' sembrare una semplice ma non lo e'.

    Piuttosto usa funzioni e procedure, inizialmente poi pondera le classi... ma solo poi.

  10. #30
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    garakkio quindi per quello che dici tu, l'estensione è del tipo:

    class Database extends Connessione... una cosa del genere, e qualora avessi bisogno di connettermi al database ed effettuare query avrò una cosa del tipo:

    class Login extends Database.

    ??
    Con i sogni possiamo conoscere il futuro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.