Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Applicazioni in OOP

  1. #1

    Applicazioni in OOP

    Salve ragazzi. E' da un po' che studio l'approccio agli oggetti con php. Ho capito bene come funziona ma non ho ancora fatto mio il sistema di ereditarietà, ecc.

    Per questo credo sia opportuno studiare qualche script che utilizzi la programmazione ad oggetti per rendermi meglio conto di come va strutturato un programma seguendo questa logica.

    Qualcuno conosce qualche script fatto in questo modo? Non mi interessa molto di cosa si occupa lo script visto che ne devo solo guardare il codice. Ho già visto qualche script come smart form (quello che sta su freephp) e qualcun altro sempre su freephp.

    Grazie mille! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2

  3. #3
    un esempio spicciolo di classe estesa in php4
    codice:
    <?php
    // classe da estendere
    class MyClass {
    	
    	// variabile pubblica, ereditata in automatico
    	var $public = 'test';
    	
    	// costruttore pubblico, ereditato in automatico
    	function MyClass() {
    		echo 'MyClass';
    	}
    	
    	// funzioni pubbliche, ereditate in automatico
    	function myFunction() {
    		echo '
    MyClass->myFunction()';
    	}
    	function myOtherFunction() {
    		echo '
    MyClass->myOtherFunction()';
    	}
    	function myChangedFunction() {
    		echo '
    MyClass->myChangedFunction()';
    	}
    }
    
    // classe estesa
    class MySubClass extends MyClass {
    	
    	// costruttore ereditato in automatico ma voglio cambiarlo ...
            // ecco un override del costruttore
    	function MySubClass() {
    		// voglio comunque usare il costruttore della classe genitore
    		parent::MyClass();
    		
    		// .. escrivere altro
    		echo '
    MySubClass';
    		
    		// variabile pubblica non dichiarata, ereditata in automatico
    		echo '
    '.$this->public;
    	}
    	
    	// override del metodo myFunction
    	function myFunction() {
    		echo '
    MySubClass->myFunction()';
    	}
    	
    	// override del metodo myFunction
            // con chiamata al metodo del genitore
    	function myChangedFunction() {
    		parent::myChangedFunction();
    		echo '
    MySubClass->myChangedFunction()';
    	}
    	
    	// e myOtherFunction ? ... ereditata in automatico
    }
    
    // istanzio la classe estesa
    $msc = new MySubClass();
    
    // richiamo il metodo sovrascritto
    $msc->myFunction();
    
    // richiamo il metodo ereditato in automatico
    $msc->myOtherFunction();
    
    // richiamo il metodo sovrascritto che richiama il metodo ereditato
    $msc->myChangedFunction();
    
    
    
    /** OUTPUT
    
    
    MyClass
    MySubClass
    test
    
    
    MySubClass->myFunction()
    
    
    MyClass->myOtherFunction()
    
    
    MyClass->myChangedFunction()
    MySubClass->myChangedFunction()
    */
    ?>
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Grazie mille per la risposta andr3a però non era esattamente questo quello che avrei voluto!

    In teoria so come funziona il sistema. Il problema è applicarlo! Mi rendo conto che ancora non riesco a staccarmi completamente dal metodo di programmazione procedurale e credo che leggere sorgenti scritti in OO potrebbe aiutarmi a comprendere meglio come si potrebbe strutturare un programma ed a fare mio il modo di pensare in OO. Cmq grazie ancora per la risposta molto esaustiva come al solito!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    questa è abbastanza completa ...
    ha un'interfaccia, una classe astratta che implementa l'interfaccia ed una serie di sottoclassi che estendono la classe principale ... a cosa serve tutto quel codice ?

    a scrivere
    $users = &new UserCounter([parametri...]);
    ed avere a seconda dei parametri la sottoclasse dedicata per quel tipo di database (un contatore "astratto", riallacciandomi all'altra discussione, usi sempre la classe UserCounter ma a seconda di come la inizializzi avrai il driver dedicato per gestire il contatore)

    http://www.devpro.it/code/63.html




    questo altro esempio invece sfrutta una classe astratta per i tipi di dato che a sua volta contiene una classe TypeHints per gestioni generiche di chiamate.
    La classe astratta viene estesa da ogni tipo di dato così che ognuno avrà a disposizione gli stessi metodi ma volendo puoi inventarti altri tipi di dato, oltre le primitive.

    Il dato, sarà una versione della astratta contenente la principale ... questa è un pò più contorta ma forse utile come esempio:
    http://www.devpro.it/code/42.html

    se vuoi altri esempi (anche non miei) specifica meglio cosa non ti è chiaro o cosa stai cercando
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Ok, ma queste due andranno benissimo per iniziare! Quando avrò capito queste poi andrò avanti! Grazie mille! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.