Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Chiarimento su Classi

  1. #1

    Chiarimento su Classi

    Ciao a tutti, sto facendo il mio primo programmino php
    procede tutto per il meglio ma mi è venuto il dubbio

    quando si usano le classi? o meglio quando è conveniente usarle?

    studiando il php5 mi sono chiesto se le classi siano davvero utili..
    io non riesco a vederne l'utilità, forse perchè vengo da asp e sono abituato alla programmazione modulare


    quindi vi chiedo un esempio pratico in cui usereste le classi..

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    159
    Dipende secondo me dal tipo di progetto che devi realizzare, ovvero, se devi scrivere un sito di 50 righe di codice non credo sia così tanto utile, ma quando ti trovi a scrivere siti di una certa grandezza io personalmente non riesco a fare a meno della OOP. Quindi secondo me come ti ripeto, dipende dal progetto che devi fare.

  3. #3

    Re: Chiarimento su Classi

    Originariamente inviato da Grambo
    Ciao a tutti, sto facendo il mio primo programmino php
    procede tutto per il meglio ma mi è venuto il dubbio

    quando si usano le classi? o meglio quando è conveniente usarle?

    studiando il php5 mi sono chiesto se le classi siano davvero utili..
    io non riesco a vederne l'utilità, forse perchè vengo da asp e sono abituato alla programmazione modulare


    quindi vi chiedo un esempio pratico in cui usereste le classi..
    La programmazione ad oggetti, in generale, ha un costo nel breve periodo molto alto in termini di sviluppo e progettazione, ma se realizzata con strumenti efficaci è, potenzialmente, molto economica e remunerativa nel medio e lungo periodo in termini di mantenimento, aggiornamento, ampliamento del codice e delle funzionalità del programma. La programmazione procedurale ha dei costi di sviluppo molto bassi nel breve periodo, ma nel lungo periodo e soprattutto in progetti complessi, il mantenimento, aggiornamento e ampliamento del codice e delle funzionalità dell'app diventa molto costoso e a volte impossibile o contro producente (capiamoci: se fatta male, succede la stessa cosa anche con oop, ma tendenzialmente oop "esiste" proprio per evitare questo scenario).

    Questa è la risposta che preferisco dare quando è posta questa domanda... prova l'oop e scoprirai gli altri vantaggi / svantaggi
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Le classi convengono sempre. Se ti leggi i vari tutorial di 2 pagine che trovi in rete sull'oggetto Automobile o sull'oggetto Gatto non ci troverai nessuna utilità. Ma vedrai che con qualche anno di esperienza sulle spalle la penserai così anche tu.
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  5. #5

    Re: Chiarimento su Classi

    Originariamente inviato da Grambo
    quando si usano le classi? o meglio quando è conveniente usarle?
    Le classi (più interfacce e compagnia bella) sono un modo per rappresentare una realtà. Lasciando perdere la "automobile" o il "gatto", vedo di farti un esempietto semplice.
    Dobbiamo gestire delle anagrafiche cliente.
    Cosa dovremo trattare? Nome, cognome, data di nascita, indirizzo.

    Possiamo procedere in due modi. Il primo è il classico approcio procedurale. Creo il codice "d'un fiato" per trattare questi pochi dati. Select, insert, update, delete. In poche righe me la cavo e molto in fretta.
    In questo specifico caso non ha senso usare le classi.
    MA...
    Ipotiziamo che domani chi ci ha commissionato questo semplicissimo sistema di gestione del cliente, vuole gestire anche le aziende. In procedurale ti trovi a dover riscrivere (bene o male) il 90% del codice: o adatti quello che hai scritto, o scrivi "ex novo" funzioni/codice molto simile a quello già scritto per trattare le aziende. Ok?
    Bom. Dopodomani il tuo cliente di chiede di gestire anche i fornitori. Sei punto e a capo, dovrai rivedere tutto o quasi il tuo codice per "accogliere" queste nuove strutture.

    Vediamola facendo con classi.
    Se avessi deciso di fare "per classi", mi sarei creato una classe, cioè una specie di modello, di schema, che rappresenta un cliente, una classe (o più, non entriamo nel dettaglio) per gestire le info dal db (per meglio dire, sempre semplificando, per fare gli aggiornamenti, inserimenti, delete ecc), una o più per gestire la grafica (tabelle, header, form ecc). Avrei perso più tempo nel creare il tutto ma avrei un grosso vantaggio.
    Domani, che il cliente mi chiede di gestire le aziende, dovrò solo creare una classe per gestire questa entià e, se ho fatto bene i compiti, non dovrò scrivere che poche righe...perchè? Perchè il cliente può essere visto come un "tipo" di azienda (o viceversa...è indifferente per questo eempio stupido ) e quindi avrei riutilizzato il 70-80% di quanto ho già fatto per gestire il cliente.
    Dopodomani che mi viene chiesto di trattare i fornitori, praticamente non dovrò scrivere quasi nulla...perchè il fornitore è anch'essa un'azienda...
    Se tra 4 giorni mi viene chiesto di gestire gli impiegati dell'azienda fornitrice...secondo te cosa farò se uso le classi?

  6. #6
    grazie per i charimenti

  7. #7
    Originariamente inviato da marco_c
    Le classi convengono sempre. Se ti leggi i vari tutorial di 2 pagine che trovi in rete sull'oggetto Automobile o sull'oggetto Gatto non ci troverai nessuna utilità. Ma vedrai che con qualche anno di esperienza sulle spalle la penserai così anche tu.
    mai usare la parola "sempre" in programmazione
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Scusate se dirotto un pò l'argomento, quando create un progetto con le classi, utilizzate i namespace per la gestione del progetto? Oppure fate solamente un'importazione della classe che interessa per quel file?
    Quello che mi chiedo se è davvero utilizzato tanto a livello di codice il namespace in PHP.
    Perchè ho confrontato con altri linguaggi ed il namespace sembra quasi un semi-namespace perchè se non erro bisogna fare sempre un'importazione e poi dichiarare il namespace.
    Grazie.

  9. #9
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739

    [Déjà vu]

    Quello che ti aspetti è un autoload delle classi. PHP non ha file di progetto, quindi il motore di script non può sapere a priori quali file caricare in fase di esecuzione a meno che tali file non siano indicati esplicitamente con delle include o require.

    I namespasce creano degli ambiti di visibilità di modo che, avendo due classi pippo o due variabili $paperino appartenenti ad ambiti o namespace diveresi, siano distinguibili. Man mano che i file vengono inclusi i name space si popolano.

    Quello che ti aspetti che avvenga, ovvero il caricamento automatico dei file, e conseguente popolamento dei namespace con gli elementi definiti, puoi cercare di farlo con __autoload

    http://php.net/manual/en/language.oop5.autoload.php
    dove per altri ti rimandano all'uso di
    http://www.php.net/manual/en/functio...d-register.php

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  10. #10
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ciao Grino.
    Ho provato così ma da errore:
    codice:
    //Primo esempio - con autoload
    global $class_name;
    $class_name="ClsClassi";
    
    function __autoload($class_name)
    {
    require_once $DOCUMENT_ROOT."classi/".$class_name.".php";
    }
     
    $foo = new Foo();
    $foo->start();
    $foo->stop();
    Dove nel $DOCUMENT_ROOT le classi/ è una cartella che contiene il file ClsClassi.php e che è il nome assegnato alla variabile $class_name.
    Errori ricevuti
    codice:
    Notice: Undefined variable: DOCUMENT_ROOT in C:\xampp\htdocs\eclipse_oggetti\Autoload\web\autoload1.php on line 8
    
    Warning: require_once(classi/Foo.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\eclipse_oggetti\Autoload\web\autoload1.php on line 8
    
    Fatal error: require_once() [function.require]: Failed opening required 'classi/Foo.php' (include_path='.;\xampp\php\PEAR') in C:\xampp\htdocs\eclipse_oggetti\Autoload\web\autoload1.php on line 8

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.