Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Emblema classi php

  1. #1

    Emblema classi php

    Ciao a tutti,
    questi giorni sto ottimizzando il codice di un programma precedentemente creato, "funzionalizzandolo" in modo da mostrare ben distinte le parti di codice e la loro funzione.

    Mi chiedevo, se non ho bisogno di condividere delle variabili tra le funzioni, e' sempre utile riunirle in una classe? nel senso, per voi e' utile fare un codice di questo tipo?
    Codice PHP:
    class prova {
    function 
    start() {
    prima();
    if(
    seconda()){
    terza();
    }
    }

    function 
    prima() {
    echo 
    "Prova";
    }

    function 
    seconda() {
    return 
    true;
    }

    function 
    terza() {
    echo 
    "seconda() = true";
    }
    }

    $TEST = new prova;
    $TEST->start(); 
    Ovviamente le funzioni sono fittizie, dato che nell'esempio sono totalmente inutili. Volevo chiedevi solo se e' utile racchiuderle in una classe o se e' meglio lasciarle "fluttuanti" insieme al resto del codice.

  2. #2

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    La programmazione ad oggetti in PHP è abbastanza particolare dato che spesso è superflua.

    Dovresti valutare semplicemente cosa sia più produttivo per il tuo script, se una serie di procedure classiche o una classe.

    Anch'io come te stò imparando la OOP su PHP e spesso all'inizio non si vede il reale benficio di questo tipo di approccio alla programmazione, creare degli esempi fittizi e semplicissimi infatti fa sorgere proprio questi dubbi di opportunità.

    Il mio consiglio è di non intestardirsi sul voler fare le cose IN OOP ma di provare ad utilizzarla solo quando si capisce di averne la reale necessità (grossi schemi di codice ripetuto o che variano per alcune piccole differenze ecc.)

    Spero possa essereti stato utile.






















    P.S.
    Forza INTER!

  4. #4
    Originariamente inviato da Sgurbat
    La programmazione ad oggetti in PHP è abbastanza particolare dato che spesso è superflua.

    Dovresti valutare semplicemente cosa sia più produttivo per il tuo script, se una serie di procedure classiche o una classe.

    Anch'io come te stò imparando la OOP su PHP e spesso all'inizio non si vede il reale benficio di questo tipo di approccio alla programmazione, creare degli esempi fittizi e semplicissimi infatti fa sorgere proprio questi dubbi di opportunità.

    Il mio consiglio è di non intestardirsi sul voler fare le cose IN OOP ma di provare ad utilizzarla solo quando si capisce di averne la reale necessità (grossi schemi di codice ripetuto o che variano per alcune piccole differenze ecc.)

    Spero possa essereti stato utile.
    Grazie mille, sei stato molto utile.
    Io ho usato spesso la OOP in PHP, quindi conosco la sua utilita', ma vedo sempre piu' script che utilizzano la OOP sempre, ed ho cercato di emularli. Vorrei sentire altri pareri, magari di chi e' un veterano.

  5. #5
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Voler far pratica è giusto e normale.

    Ma capisci che se devo fare uno script di due righe che mi invia una mail come amministratore ogni volta che viene lasciato un messaggio sul mio guestbook forse non è molto utile scrivere il doppio del codice per il triplo del tempo per creare una classe che poi NON riutilizzerò in alcun altro punto ne tantomeno verrà ereditata da chissachè.

    Adesso invece io stò realizzando un CMS per un sito e stavo valutando di portare le operazioni di INSERT, UPDATE e DELETE dei dati in classi comuni.

    Fare esperienza su casi reali e sempre la cosa migliore IMHO.

  6. #6
    Capito, hai proprio colto nel segno (il CMS), quindi dici che se il codice e' lungo e' meglio fare una classe per strutturarlo per bene.

    Dato che hai indovinato ( ) ti mostro il codice di una pagina che sto facendo:
    Codice PHP:
    <?php
        
    class categorie {
        
        
    // Gestisce quale operazione eseguire
        
    function start() {
              switch(
    $_GET['op']){
              case 
    "edit":
                  
    $this->printEdit();
              break;
              case 
    "editok":
                  
    $this->edit();
              break;
              case 
    "delete":
                  
    $this->delete();
              break;
              case 
    "create":
                  
    $this->create();
              break;
              default:
                  
    $this->printPanel();
              break;
              }
        }
        
        
    // Mostra la lista di categorie
        
    function printList() {
            
    $query mysql_query("SELECT * FROM category ORDER BY ordine");

           echo 
    "<table align='center' border='1'>";

            while(
    $echo mysql_fetch_array($query)){
            if(
    $echo[3] == 0){$tipo "default";}
           else{
    $tipo "html";}

           echo 
    "<tr><td>".$echo[1]." (Posizione: ".$echo[2].", Tipo: ".$tipo.")</td><td>[url='index.php?act=categorie&op=edit&id=".$echo[0]."']Modifica[/url]</td><td>[url='index.php?act=categorie&op=delete&id=".$echo[0]."']Cancella[/url]</td></tr>";

              }

              echo 
    "</table>
    "
    ;
        }
        
        
    // Mostra il pannello del modulo
        
    function printPanel() {
              echo 
    "Categorie:
    "
    ;
            
    $this->printList();
            
    ?>

            <form name="cat" action="index.php?act=categorie&op=create" method="post">

            Inserisci una nuova categoria:


            Nome: <input type="text" name="name">

            Tipo: <select name="tipo" onChange="selectcat()">
            <option value="0">Default</option>
            <option value="1">Html (contiene codice html)</option>
            </select>

            <div id="html" style="display:none;"><textarea name="text">Inserire il contenuto HTML della categoria</textarea></div>
            Posizione (rispetto alle altre categorie): <input type="text" name="ordine"> (default = 0)


            <input type="submit" value="Crea">

            </form>

           <?php
        
    }
        
        
    // Mostra il pannello di modifica categoria
        
    function printEdit() {
            global 
    $DB;
            
    $echo $DB->queryAndFetch("SELECT name,ordine,tipo,text FROM category WHERE id='".$_GET['id']."'");

           echo 
    "<form action='index.php?act=categorie&op=editok' method='post'>";
           echo 
    "<input type='hidden' name='id' value='".$_GET['id']."'>";

            echo 
    "Inserire il nuovo nome della categoria: ";
             echo 
    "<input type='text' name='name' value='".$echo[0]."'>
    "
    ;
              if(
    $echo[2] == 1){
              echo 
    "Modificare il contenuto HTML: 
    "
    ;
              echo 
    "<textarea name='text'>".$echo[3]."</textarea></div>";
              }
              echo 
    "Inserire la nuova posizione: ";
              echo 
    "<input type='text' name='ordine' value='".$echo[1]."'>
    "
    ;

              echo 
    "<input type='submit' value='Modifica'>";

              echo 
    "</form>";
        }
        
        
    // Modifica la categoria
        
    function edit() {
            if(
    mysql_query("UPDATE category SET name='".$_POST[name]."',ordine='".$_POST[ordine]."',text='".$_POST[text]."' WHERE id='".$_POST[id]."'")){

              echo 
    "Categoria modificata con successo.";
              }
              else{
              echo 
    "Errore nella modifica della categoria";
              }
        }
        
        
    // Cancella la categoria
        
    function delete() {
            if(
    mysql_query("DELETE FROM content WHERE category='".$_GET['id']."'") && mysql_query("DELETE FROM category WHERE id='".$_GET['id']."'")){

              echo 
    "Categoria eliminata con successo.";
              }
              else{
              echo 
    "Errore nell'eliminazione della categoria";
              }
        }
        
        
    // Crea la categoria
        
    function create() {
            if(
    mysql_query("INSERT INTO category (name,ordine,tipo,text) VALUES ('".$_POST[name]."','".$_POST[ordine]."','".$_POST[tipo]."','".$_POST[text]."')")){

            echo 
    "Categoria \"".$_POST[name]."\" aggiunta.";
            }
            else{
            echo 
    "Errore nella creazione della categoria.";
            }
        }
        }
    $CATEGORIE = new categorie;
    ?>
    Questo viene poi richiamato tramite $CATEGORIE->start(); da un'altra pagina.
    In questo caso trovi sensato usare le classi? io direi di si perche' cosi' chi vuole modificare il codice si trova tutto diviso in maniera pulita ed inoltre racchiuso in una classe che indica che l'insieme di funzioni riguarda un determinato "argomento" di operazioni.

  7. #7

  8. #8
    sono preciso nella vostra identica situazione, sviluppando un personale CMS mi sono ritrovato a studiare le classi e ora mi pongo il problema se usarle o no? e se mi sono utili?

    io ho strutturato tutto a moduli di file .php (dove sono presenti variabili, funzioni, codici, ..) da richiamare solo se ce ne è bisogno con require/include ...quindi ho tutto molto ordinato ed efficiente ...quindi perchè usare le classi?

    da quel che ho capito in queste ore di studio delle classi è che annidando le classi posso creare personalizzazioni interessanti ...forte ...ma oltre a questo a che mi servono? :master:
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  9. #9
    forse un altro vantaggio sta nel poter usare un kit di variabili che sono efficaci solo all'interno della classe, senza interferire con il codice principale? :master:


    ps: è buffo... dopo settimane di studio dei CMS già disponibili, ho capito che c'è più lavoro nell'impararne uno già fatto, e soprattutto nel configurarlo invece che farsi qualcosa da soli ...anche per voi è così?
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

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.