Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Warning su Classe PHP

  1. #1

    Warning su Classe PHP

    Salve a tutti, mi sto avvicinando alla programmazione ad ogetti ma ho i miei problemi a capire il funzionamento. Ho fatto un piccolo esempio che recupera dei dati da un form e poi me li stampa a video. Funziona ma genera dei warning.

    codice:
    <?php
    
    class descrizione
    { 
    	//private $desc_ita;
    	var $desc_it = null;
    	var $desc_en = null;
    	var $desc_fr = null;
    
    	function __construct($desc_it, $desc_en, $desc_fr)
    	{
    		$this->desc_it = $desc_it;
    		$this->desc_en = $desc_en;
    		$this->desc_fr = $desc_fr;
    	}
    	
    	function get_desc()
    	{
    		return $this->desc_it; 
    		return $this->desc_en;
    		return $this->desc_fr;
    	}
    	
    };
    
    
    $italiana = new descrizione($_POST['desc_it']);
    $inglese  = new descrizione($_POST['desc_en']);
    $francese = new descrizione($_POST['desc_fr']);
    
    
    print "
    
    ".$italiana->get_desc()."</p>"; 
    print "
    
    ".$inglese->get_desc()."</p>";
    print "
    
    ".$francese->get_desc()."</p>";
    
    ?>
    codice:
    Warning: Missing argument 2 for descrizione::__construct(), called in /home/xxxx/public_html/Descrizione/recupera.php on line 27 and defined in /home/xxxx/public_html/Descrizione/recupera.php on line 10
    
    Warning: Missing argument 3 for descrizione::__construct(), called in /home/xxxx/public_html/Descrizione/recupera.php on line 27 and defined in /home/xxxx/public_html/Descrizione/recupera.php on line 10
    i warning sono anche per gli altri due.

    A cosa sono dovuti? dove sbaglio?

    Qualcuno mi spiega.

    Grazie

  2. #2
    i tre argomenti nel costruttore sono obbligatori.

    ha due modi per risolvere

    O quando istanzi la classe

    $inglese = new descrizione("", $_POST['desc_en'], "");

    O rendendo tutti gli argomenti del costruttore facoltativi



    function __construct($desc_it = "", $desc_en = "", $desc_fr = "")


    Ciò detto ti invito a pensare ad un modo più elegante per risolvere la cosa.

    Inoltre la keyword "var" è utilizzata nel paradigma ad oggetti di php4, mentre il metodo __construct() esiste da php5. Sostituisci var con gli attributi di visibilità (public, protected, private) che ti servono.
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    in che senso più elegante?

    Ho i miei problemini a capire...

  4. #4
    non so a cosa serve la tua classe, ma non importa per questo ragionamento.

    Vedo che a dipendenza della lingua succede qualcosa.

    Ora hai tre lingue. Magari domani sono quattro e tra un anno 300.

    A quel punto cosa fai? un costruttore che passa 300 argomenti?

    La generalizzazione e l'estendibilità sono le caratteristiche essenziali di un buon codice. E' dunque opportuno trovare una soluzione che non costringa a pasticciare ogni volta che si deve aggiungere qualcosa.

    La tua classe è di molto semplificabile. anche se non capisco a cosa possa servire una classe che ritorna quello che gli viene passato.

    Poi c'è un errore di sintassi, quando chiudi la parentesi graffa della classe, c'è un ; che non dovrebbe esserci

    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  5. #5
    Allora questo per ora è solo un esempio, ho creato un form con 3 aree testo, ed il mio scopo finale è quello di inserire queste descrizioni all'interno di un db.

    Recuperarle e passarle ad esempio ad un poolconenction che le inserisce.

    Questo esempio mi serve per capire un pò il funzionamento delle classi, è il mio primo approccio.

    Per il ; ho notato l'errore

    A quel punto cosa fai? un costruttore che passa 300 argomenti?
    Infatti credo che ci sia un modo migliore e più semplice per fare ciò!!!

    Grazie Francy

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.