Pagina 7 di 7 primaprima ... 5 6 7
Visualizzazione dei risultati da 61 a 65 su 65
  1. #61
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Attenzione a non cadere nel classico errore
    L'oggetto non deve fare TUTTO ma ciò che gli spetta
    Se un oggetto ad esempio si occupa di reperire i dati da un database, quell'oggetto NON DEVE effettuare delle echo o altre cose similari... poichè l'oggetto ha un'altro compito

    Quindi è normale che tu faccia
    Codice PHP:
    while (list($id$titolo) = $result->fetch_row())
    {
    //... codice

    E' normale perchè l'oggetto $result ha il compito di manipolare i dati del db, non di mostrarli a video che è compito eventualmente di un altro oggetto che potresti creare allo scopo
    Un oggetto tipo
    Codice PHP:
    class ShowData
    {
      private 
    $rows;
      public function 
    __construct($result)
      {
        
    $this->rows $result;
      }
      public 
    functoin returnHTML()
      {
         
    $html "";
         while (list(
    $id$title) = $this->rows->fetch_row())
           
    $html .= "ID = $id, TITOLO = $title";
      }

    E nel tuo php sostituiresti questa istruzione
    while (list($id, $titolo) = $result->fetch_row())

    Con
    Codice PHP:
    $show = new ShowData($result);
    echo 
    $show->returnHTML(); 
    Ovviamente di solito non si crea un oggetto che faccia "così poco" ma è un passo verso la programmazione MVC

    Un oggetto/i gestisce il reperimento dei dati
    Un oggetto/i gestisce la creazione dell'output in base a tali dati
    Un oggetto/i (o il codice base) gestisce la creazione degli oggetti adeguati, la chiamata dei giusti metodi, con i giusti parametri

  2. #62
    E qui come vedi:
    Codice PHP:
      public function __construct($result)
      {
        
    $this->rows $result;
      } 
    Torniamo al discorso ke ti ho detto io.. l'aggregazione.. Come vedi, $this->rows->fetch_row() chiama un metodo della classe mysqli.. ma all'interno della classe ShowData non esiste un'oggetto mysqli.. xò i suoi metodi sono disponibili x effetto dell'aggregazione..
    Stessa cosa succedeva con il database..

    Non è per rompere i coglions ma è un concetto fondamentale da imparare.. Corriggetemi se erro..
    Questa volta, più che un voto.. è favoreggiamento.

  3. #63
    io riporto dis eguito un metodo che ormai per me è diventato classico,da seguire per tutte le applicazioni web che faccio:

    innanzi tutto creo una classe di base che contiene metodi e proprietà di utilizzo generale, fra cui variabili PROTECTED che rappresntano il nome del database, user, password e host te le definisco in CONSTRUCT, tipo:

    Codice PHP:
    class Generale {
      protected 
    $host;
      protected 
    $db;
      protected 
    $user;
      protected 
    $password;

      function 
    __construct() {
        
    $this->$host"localhost";
        
    $this->db    "database";
        
    $this->user  "username";
        
    $this->pass  "password";
      }

      
    // seguono le function da usare come metodi dell'oggetto GENERALE

    a questo punto se devo ad esempio inserire una anagrafica clienti creo un oggetto CLIENTE che eredita dalla classe GENERALE tutte le sue proprietà e metodi. Qui si nota che nella __construct chiamo la construct della classe PARENT, cioè genitore e quindi chiamo la constrcut di GENERALE per definire le variabili da usare senza doverle ridefinire nella classe Cliente:

    Codice PHP:
    class Cliente extends Generale {
      
    // variabili della classe Cliente

      
    function __construct() {
        
    parent::__construct();
      }

      
    // metodi della classe Cliente

    in questo modo è molto più facile la manutenzione, in quanto si ha una strutura gerarchica e si va a toccare magari solo i metodi della classe figlia ad esempio.

  4. #64
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    Originariamente inviato da Leilond
    Attenzione a non cadere nel classico errore
    L'oggetto non deve fare TUTTO ma ciò che gli spetta
    Se un oggetto ad esempio si occupa di reperire i dati da un database, quell'oggetto NON DEVE effettuare delle echo o altre cose similari... poichè l'oggetto ha un'altro compito

    Quindi è normale che tu faccia
    Codice PHP:
    while (list($id$titolo) = $result->fetch_row())
    {
    //... codice

    Sono perfettamente daccordo con te! nn mi piace cmq creare una funzione o nel caso specifico un metodo che scrivi html... vedo le funzioni o i metodi un modo x fare un retourn di variabili... a questo punto scrivo una funzione che fa la query, faccio mandare con il retourn il risultato della query e poi la manipolo nel codice!

  5. #65
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    Originariamente inviato da Emulman
    innanzi tutto creo una classe di base che contiene metodi e proprietà di utilizzo generale, fra cui variabili PROTECTED che rappresntano il nome del database, user, password e host te le definisco in CONSTRUCT,

    a questo punto se devo ad esempio inserire una anagrafica clienti creo un oggetto CLIENTE che eredita dalla classe GENERALE tutte le sue proprietà e metodi. Qui si nota che nella __construct chiamo la construct della classe PARENT, cioè genitore e quindi chiamo la constrcut di GENERALE per definire le variabili da usare senza doverle ridefinire nella classe Cliente:

    in questo modo è molto più facile la manutenzione, in quanto si ha una strutura gerarchica e si va a toccare magari solo i metodi della classe figlia ad esempio.
    ottima idea ma... nn sono ancora arrivato a studiare questo tipo di aggregazione ed ereditarietà... però è un ottima idea!

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.