Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 41
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30

    PHP5 classi suggerimenti

    Sto approcciandomi al php5 e alla programmazione oop.
    Ho creato una classe per la connessione al db.
    codice:
    class ConnectDB
    {
    
    	protected $conn;
    
    		public function __construct()
    		{
    			$this->DbConnect();
    		}
    
    		protected function DbConnect()
    		{
    			include "config/db_config.php";
    
    			$this->conn = mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
    			mysql_select_db($db,$this->conn) OR die("Impossibile selezionare il database $db");
    
    			return TRUE;
    		}
    }
    Ora vorrei creare altre 2 classi per fare select e insert e ho qualche dubbio su come fare.
    E' corretto fare così?
    codice:
    class SelectQ extends ConnectDB { 
    		
    public function ShowMarca()
    		{
    			$sql = "SELECT * FROM marca";
    			$res = mysql_query($sql,$this->conn);
    
    				while($row = mysql_fetch_array($res))
    				{
    
    					$marca = "$row['id_marca'];"
    				}
    
    			return $marca;
    		}
    }
    
    Poi istanzio così
    obj = new SelectQ();
    $obj->ShowMarca();
    Grazie
    Ciao

  2. #2
    Posso?




    Ma che ė quella roba? Non fai prima a vedere in un framework come funziona il discorso (per non parlare di studiare l'oop) prima di avventurarti e scrivere quel codice?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Come spesso accade il problema non è scrivere classi ma riuscire a ragionare ad oggetti. L'OOP è un paradigma e come tale va utilizzato.
    Sempre più spesso le persone raccolgono funzioni eterogenee in classi e ritengono, in questo modo, di programmare ad oggetti.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    verissimo..anche io quando spiego cose vuol dire OOP vado prima per esempi, tipo con la classica automobile che è un oggetto diviso in classi (ruote, motori, sospensioni, ecc) e in metodi (accelera, frena, ecc), solo così si può capire cosa si sta facendo!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30
    Sto leggendo PHP5 guida completa e volevo provare a fare 2 classi per inserire record e fare query. Evidentemente non ho capito nulla di come funziona la programmazione OOP... se qualcuno è così gentile da dirmi nello specifico come ragionerebbe per fare quello che ho chiesto mi farebbe un grande favore, magari ci inizio a capire qualche cosa...

    Grazie
    Ciao

  6. #6
    il discorso che chiedi è molto lungo...vedo di sbrigarmi il più possibile! dunque, come ho detto nell'esempio precedente una CLASSE è un oggetto. Nel nostro mondo fisico equivale ad esempio ad una automobile e io la definisco come class Automobile .
    Ogni oggetto ha proprietà e metodi : una proprietà nel caso dell'automobile è il suo colore, il numero di ruote, marca e modello; un metodo è quel che si può fare con l'oggetto: nel caso dell'automobile accelera, frena, accendi motore ecc ecc.
    entrambi (proprietà e metodi) sono di tre tipi:

    public : la proprietà o metodo sono visti anche dal di fuori della classe stessa
    protected: invisibile all'esterno ma visibile all'interno della classe e di tutte quelle ereditate;
    private: visibile solo all'interno della classe che la ha definita.

    nel caso dell'oggetto automobile rappresntiamolo così:

    Codice PHP:
    class Automobile {
      
    //definisco delle proprietà PUBLIC
      
    public $colore;
      public 
    $num_ruote;
      public 
    $marca;
      public 
    $modello;

      public function 
    accelera() {
        
    // metodo per accelerare
      
    }
      public function 
    frena() {
        
    // metodo per accelerare
      
    }
      public function 
    accendi_motore() {
        
    // metodo per accendere il motore
      
    }  

    per usare questa classe in uno script PHP tu crei una istanza o copia della classe con

    Codice PHP:
     $auto = new Automobile() 
    a questo punto puoi usare tutte le sue proprietà e metodi usando -> :

    Codice PHP:
    $auto->colore 'bianco';
    $auto->num_ruote 4;
    $auto->marca 'Ferrari';
    $auto->modello 'Enzo';
    $auto->accendi_motore();
    $auto->accelera();
    $auto->frena(); 
    forse non noti subito il grande vantaggio delle classi che è sicuramente il seguente: te devi solo pensare ad usare un metodo (o function) senza preoccuparti di come funziona . Ad esempio quando chiami il metodo accendi_motore succedono un mucchio di cose: isnerisci la chiavetta, la giri, si commuta un circuito elettrico che fa partire il motorino elettrico ecc ecc. Tu non ti devi preoccupare di queste cose perchè le fa tutte il metodo stesso. Per cui proprietà e metodi di una classe si possono usare in qualsiasi altra classe senza il minimo cambiamento.. Diverso è il discorso se ad esempio devi accendere un motore elettrico invece di uno scoppio che ha una procedura diversa: quindi sarà meglio aggiungere alla classe Automobile un metodo public function accendi_motore_elettrico()

    FINE PRIMA PARTE..DEVO CONTINUARE?????

  7. #7
    Io non vorrei esprimermi in maniera sgradevole, solo che tengo a ribadire un concetto:

    - tutti quelli che passano per la prima volta dal procedurale a OOP, si leggono qualche guida/tutorial sull'argomento e come primo esperimento si buttano a fare oggetti per interagire con un database.

    Signori: se c'è una cosa complicata, in ambito web-php + OOP, è proprio l'interazione con un database. Per fare un sistema puro ad oggetti, ci vogliono pattern su pattern e una conoscenza approfondita dell'argomento, oltre che ad una certa esperienza.

    Quindi: parti da qualcosa di già fatto, ad esempio prenditi un framework e vedi come esso gestisce il discorso, studiati i pattern corrispondenti (99% active recordset) e cerca di avere un'idea a riguardo, poi se è dopo se ti va provi a fare una cosa tutta tua. Giusto ieri sera rileggevo http://www.amazon.it/Patterns-Enterp...64494&sr=1-10, la sezione dedicata ai pattern per l'interazione del database, e ti assicuro che quel centinaio di pagine dedicate all'argomento non sono per niente esaustive, soprattutto perchè applicare alle proprie esigenze i pattern è un mondo a parte che nessun libro potrà mai spiegarti fino in fondo.

    Se vuoi, parti da qualcosa di più semplice... parti per dire dall'usare un framework e a giocare un pò con i model, cerca di capire pro e contro di determinate soluzioni, etc.

    Partire dalla gestione del db magari evita.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30
    Grazie a tutti voi per le risposte e la pazienza che avete dimostrato.
    Io programmo in php (procedurale) da un po e ormai penso di avere una certa esperienza al riguardo. Vorrei provare a passare al paradigma OOP, ma faccio tremendamente fatica a ragionare in questo senso e allora ho pensato di leggermi qualche libro e provare sul campo a fare qualche cosa di concreto che sia un po + complesso rispetto ai soliti esercizi che si trovano sulla programmazione OOP (oggetto animali, ecc, ecc.).
    Evidentemente ho fatto il passo + lungo della gamba... e sono un po deluso visto che il libro che sto leggendo a parte la sintassi non mi ha aiutato nel regionare in modo corretto.. :-(

    Grazie

  9. #9
    non è mica una impresa ragionare in OOP..devi solo tenere prsente cosa vuoi che faccia una webapp. ad esempio, fai conto di dover fare una webapp per la gestione di una ditta che vende scarpe per corrispondenza. Quali saranno gli oggetti da definire? mettiti a tavolo con un foglio di carta davanti e ponza: certamente ci saranno clienti, venditori, vendite, scarpe: quindi 4 oggetti. l'oggetto scarpe avrà le proprietà marca, modello, numero, prezzo, descrizione, foto; quella vendite avrà un id per il venditore, un id per il tipo scarpe, data, quantità; le altre due (clienti e venditori) sono delle anagrafiche. Basta poi tarsformarle in oggetti e et voilà! con l'aggiunta di una classe GENERALE che contiene proprietà e metodi utilizzabili dalle altre classi (ad esempio apertura e chiusura DB; inserimento di una query in un array; conversione date da quella inglese standard di mysql al formato italiano; e così via)

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30
    Originariamente inviato da Emulman
    non è mica una impresa ragionare in OOP..devi solo tenere prsente cosa vuoi che faccia una webapp. ad esempio, fai conto di dover fare una webapp per la gestione di una ditta che vende scarpe per corrispondenza. Quali saranno gli oggetti da definire? mettiti a tavolo con un foglio di carta davanti e ponza: certamente ci saranno clienti, venditori, vendite, scarpe: quindi 4 oggetti. l'oggetto scarpe avrà le proprietà marca, modello, numero, prezzo, descrizione, foto; quella vendite avrà un id per il venditore, un id per il tipo scarpe, data, quantità; le altre due (clienti e venditori) sono delle anagrafiche. Basta poi tarsformarle in oggetti e et voilà! con l'aggiunta di una classe GENERALE che contiene proprietà e metodi utilizzabili dalle altre classi (ad esempio apertura e chiusura DB; inserimento di una query in un array; conversione date da quella inglese standard di mysql al formato italiano; e così via)
    E' esattamente quello che volevo fare, infatti volevo fare una classe per il collegamento al db e una sotto classe che facesse le varie operazioni query ed insert sull'oggetto automobili e una che facesse le query e insert sull'oggetto anagrafica ma evidentemente ho scritto qualche cavolata nel mio esempio.

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.