Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Suggerimenti per progetto OOP

    Salve a tutti è da parecchio tempo che non scrivo sul forum ed oggi si presenta la situazione ideale per farvi elargire consigli che, so già, per me saranno indispensabili

    Allora praticamente ho realizzato da qualche annetto un sistema cms proprietario che utilizzo per gestire siti ed il relativo front end, con registrazioni newsletter ecommerce etc etc.
    Venendo da un linguaggio fortemente procedurale quale asp il primo impatto che ebbi con php fu quasi un porting delle funzioni che già avevo e quindi realizzai il tutto seguendo quello schema. Adesso ho da poco abbracciato, o meglio sto cercando, il mondo oop di php e vorrei translare il tutto secondo questa nuova filosofia reputandola più lineare, efficiente e scalabile.

    Premetto che ho fatto un infarinatura di guide cosi da sapere più o meno come ragiona la programmazione ad oggetti ed ho realizzato qualche classe di prova tanto per ma molto molto semplici. Il quesito è il seguente. Avendo un file di configurazione estrapolato da un db che gestisce parecchie variabili essenziali per front end che dovrebbero essere il più possibile protette ed altre pubbliche come nome del sito etc etc, avendo la necessita di moduli come: registrazione utente, new2sletter, ecommerce, banner, etc etc ed utilzzando una struttura db da me realizzata che non posso cambiare vorrei sapere come secondo voi dovrei impostare il progetto di realizzazione: Interfacce sono necessarie se si quali e perchè, classi astratte, quali sono i livelli di visibilità da impostare per i metodi/proprieta per far si che siano il più sicuro possibili quelli "riservati" e come impostare quelle pubbliche.

    Spero di essere stato abbastanza chiaro e confido in un vostro suggerimento


    Grazieeeeeeeeeee
    ACCESS DENIED
    Io non sarò nessuno ma nessuno sarà mai come me !!!!!!

  2. #2
    La tua domanda e' decisamente troppo troppo generica. E' impossibile dare consigli "a grandi linee" su un progetto che andrebbe studiato nello specifico e probabilmente richiederebbe un'analisi decisamente fuori dalla portata di un thread su un forum

    Comunque non devi partire individuando cosa e' necessario fare (interfacce, classi astratte, etc.): nessuna cosa e' strettamente necessaria, dipende da come vuoi strutturare tu il tuo codice.

    Inoltre le impostazioni di visibilita' di proprieta' e metodi "proteggono" solo da altro codice, non dagli utenti. Sono un modo di tenere organizzato il codice imponendo delle regole, non sono misure di sicurezza.

    Ti consiglio di procedere e fare domande specifiche quando ti trovi ad avere dubbi precisi.

  3. #3
    Grazie mille per la risposta, allora procediamo con ordine: volendo fare una vera transazione dalla struttura esistenza procedurale ad una struttura robusta oop le prime cose da translare sarà il file di configurazione che contiene i parametri di accesso al db, una query che mi recupera delle informazioni quali: nomesito, dominio, pathbase, designer del sito, template utilizzato etc ed un paio di controlli vari. Per incominciare ad utilzzare il paradigma ad oggetti come mi consiglieresti di operare per inziare a progettare una o più classi per questa situazione??
    Successivamente dovrei sviluppare una o pià classe per:
    Operazioni su db:select,insert,update
    Registrazione Utenti
    Login Utenti
    ....
    Ma procediamo un passo alla volta cosi da capire come dover ragionare visto che non ho idea sull approccio, per sicurezza intendevo proprio ciò che hai detto cioè instanziando una sottoclasse da un ipotetico altro utilizzatore avere delle regole sintattiche che coordinino e limitino quando possibile.
    ACCESS DENIED
    Io non sarò nessuno ma nessuno sarà mai come me !!!!!!

  4. #4
    Ci sono mille modi per fare una classe wrapper per interagire col database. Tipicamente avrai un costrutture che si occupa di creare la connessione e vari metodi per gestire le operazioni. Se non ti serve una cosa particolarmente strutturata, puoi evitare del tutto di crearti una tua classe ed usare direttamente l'interfaccia PDO fornita da PHP.

    In ogni caso, a meno che a te non interessi proprio l'aspetto didattico di costruirti tutto da zero, ti consiglio di usare un framework MVC (codeigniter, kohana, zend, ecc.): ti fornisce le basi per le operazioni piu' comuni gia' pronte, ti prepara una struttura per organizzare il tuo progetto e ti da' la solidita' di un prodotto gia' testato da una grossa base di utenti.

  5. #5
    Hai colpito nel segno vorrei proprio creare tutto da zero per una questione molto autodidattica.
    Proprio adesso stavo procedendo in questo modo correggimi se hai qualche suggerimento

    Creazione di una classe abstract dove imposto i parametri accessi al database ed dei parametri essenziali per il front-end, successivamente ho creato un metodo final protected per la connessione al database e verificandone lo stato. Una classe di StarUp che estende la superclasse dove imposto le proprietà da richiamare in front-end estrapolate dal database già connesso e esegue delle operazione settando le proprietà pubbliche da utilizzare.
    Vorrei come prima cosa dividere la fase di connessione al database e dati sensibili per intenderci e poi effettuare le altre operazioni estendendo la superclasse.

    Ho fatto un abbozzo di superclasse ma non ho idea se segua una logica chiederei il tuo consiglio.

    Codice PHP:
    abstract class Config {
        
        
    /****PROPRIETA****/
        
    const pathbase 'http://localhost/roberto';
        const 
    dbname_mast 'roberto';
        const 
    servename_mast 'localhost';
        const 
    username_mast ='root';
        const 
    password_mast='';
        const 
    photo_upload_ftp 'rr';    
        protected static 
    $offline false;
        protected static 
    $connection false;
        
        
        protected static 
    $link;
        protected 
    $logNotify = array(
                    
    'database' => 'Attenzione database non trovato o non accessibile',
                    
    'query_err' => 'Errore durante l esezione della query richiesta',
                    
    'offline' => 'Sito Attualmente Offline per manutenzione Straordinaria'
                    
    );
        
        
    /****CONNESSIONE DB*******/
        
    final protected function connect_db(){
            if(!
    self::$connection && !self::$offline){
                
    self::$link mysql_connect(self::servename_mast,self::username_mast,self::password_mast);
                if(
    self::$link){
                    
    mysql_select_db(self::dbname_mast,self::$link);            
                    
    self::$connection true;    
                }else{
                    
    $this->setOffline(true);
                }    
            }                
                    
        }    
        
        
    /****IMPOSTA IL SITO IN OFFLINE*****/
        
    protected function setOffline($state){
            
    self::$offline =  $state;
            if(
    self::$offline){
                
    header("location: self::pathbase/administrator/bin/offline.php");
            }
        }
        
        
    /****GESTIONE ERRORI********/
        
    protected function getError($logError){
            return 
    $this->logNotify[$logError];
        }
        
        
        
    /****CHIUSURA DB********/
        
    protected function close() {
            
    mysql_close(self::$link);
        }
        
        

    ACCESS DENIED
    Io non sarò nessuno ma nessuno sarà mai come me !!!!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.