Newsgroup: it.comp.www.php
Titolo: programmazione a oggetti e include

Buongiorno.
Mi ponevo una domanda relativa alla programmazione ad oggetti.
La programmazione ad oggetti non č il mio forte provenendo da ambienti dove 
se ne fa un uso limitato.
Mi sembra di capire che in php si inserisce una include dello script php, 
poi si dichiara l'oggetto e infine si richiamano le function. (prendete 
questa definizione un po' cosě).
Guardando alcuni esempi php invece vedo che usano solo delle include e poi 
usano le function come se fossero all'interno dello script.
Quali sono i vantaggi e svantaggi dell'uno o l'altro modo?
Grazie
Ciao
Eugenio 


Senza esempi non č semplice, comunque potrebbero essere metodi statici, 
che non hanno bisogno di istanziare l'oggetto:
http://pear.php.net/manual/en/package.http.http.redirect.php
In questo modo le classi vengono utilizzati come "raccoglitore" di funzioni.
Con php5 non č necessario includere la dichiarazione della classe, ma 
viene sfruttato il metodo __autoload
	Francesco

 sono i vantaggi e svantaggi dell'uno o l'altro modo?
In realta` non e` necessario fare un include, anche se aiuta a mantenere 
pulito il codice.
La programmazione a oggetti non e` un fatto di include, ma di "isolamento" 
e "raggruppamento" dei compiti di alcune funzioni su un particolare set di 
dati.
Il confine con la programmazione funzionare/procedurale e` abbastanza 
labile, tanto che alcuni linguaggi sono completamente a oggetti (Java) e 
altri completamente funzionali (C), e funzionano bene entrambi.
PHP ti consente di usare entrambi gli approcci.
Quando ti accorgi che alcune operazioni si riferiscono sempre agli stessi 
dati, puoi pensare di raggrupparli in un oggetto.
Per esempio (classico) prendi le news di un sito. Una singola notizia e` 
(in PHP) un array che contiene il titolo, la data e il testo della news. 
Ora pensa a cosa fai con questa "news": la salvi in un DB, la carichi da 
un DB, la stampi sullo schermo, la infili in un form per la modifica, ecc.
A questo punto puoi pensare di creare l'oggetto News:
class News {
  pubblic $data = array();
}
E di gestirlo come fosse un tutt'uno:
$n = new News();
$n->data["titolo"] = "Titolo della news";
$n->data["data"] = time();
$n->data["testo"] = "Testo della news
Ti rendi conto presto che diventa scomodo, e che titolo, testo e data sono 
attributi della news stessa, quindi lo cambi:
class News {
  public $titolo;
  public $data;
  public $testo;
}
Ora usi:
$n = new News();
$n->titolo = "...";
Ecc. ecc.
Quando devi scriverlo a video usi
<div class="news">
 <h2><?php print $n->titolo; ?></h2>
 <span class="data"><?php print $n->data; ?></span>
 <p><?php print $n->testo; ?></p>
</div>
Puoi espanderlo per metterci le funzioni che dicevamo:
class News
{
  public $titolo, $data, $testo;
  public function save($db, $table)
  {
    $res = mysql_query("insert into " .$table.
                   " (titolo, data, testo) values " .
                   "'" .$this->titolo. "', " .
                   "'" .$this->data. "', " .
                   "'" .$this->testo. "'"
                   , $db);
    return $res;
  }
}
Quindi dopo aver assegnato le tue variabili agli attributi della classe, 
ti basta un
$db = mysql_connect("....");
$n->save($db, "news");
Per salvarlo in DB.
Naturalmente l'esempio e` pieno di bug di sicurezza e di errori logici e 
di progettazione, ma per capire i concetti di base dovrebbe andare bene.
Bye.