Newsgroup: it.comp.www.php
Titolo: classi per pagina php  (T.A.C. One ci sei? :-) )

Visto che l'ultimo esempio fatto era troppo complicato ne faccio uno
nuovo; vorrei cercare di utlizzare la programmazione ad oggetti per fare
una pagina php di esempio (premetto che sono agli inizi).
Vi dico come ho pensato la cosa e ditemi se son proprio fuori strada o
meno.
Si tratta di una semplice pagina php che a seconda del valore di un
parametro id_video che arriva nell'url fa vedere un video .swf(formato
Flash) diverso (ricavando il nome del video in questione dal DB)
Ecco le classi:
Mi creo una classe Connessione che ha un metodo per connettersi al DB e ha
un metodo get_connectionDB() che restituisce appunto la connessione in
modo che le altre classi la possano usare, nel metodo __destruct della
classe Connessione chiudo la connessione; questa classe ha varie proprietà
(connesso, db_user, db_password ecc.)
Poi mi creo la mia classe Video che ha le seguenti proprietà
id_video
nome_video
e i metodi
recuperaVideo(come parametro riceve la connessione){
esegue una select sul db per recuperare il nome del video e lo memorizza
nella proprietà nome_video
}
metodo costruttore (come parametro riceve un id){
setta la proprietà id_video
}
metodo visualizzaVideo(){
butta in output il video
}
la mia pagina è cosi fatta:
<?php
$id=...ricava dall'url l'id del video
istanzio un oggetto($oggetto_connessione) della classe Connessione e
invoco il suo metodo per connettersi al DB
a questo punto nella pagina tramite un'istruzione
$mia_connessione=$oggetto_connessione->get_connectionDB() ho a
disposizione la connessione
invoco il costruttore della classe Video passandogli $id
invoco recuperaVideo($mia_connessione) sull'oggetto della classe Video
invoco visualizzaVideo() sull'oggetto della classe Video
?>
aspetto un parere su come ho organizzato le classi
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

  
wrote:
Ciao Diana, ho letto il msg quasi per caso, visto che non seguo molto il  
newsgroup.
Non sono poi quel grande esperto in classi, ti dò giusto un paio di  
opinioni.
Se qualcuno si sente di fare correzioni saranno bene accette.
Piu' chiaro dell'altra volta, non sono sicuro di aver compreso comunque  
tutto.
Io farei:
class DbConnection {
   function __construct ($host, $user, $password){
     //....
   }
  //...
}
class Video {
	function ($connection, $id=''){
		if ($id){
			$this->load($id)
		};
	}
	function load ($id) {
		//.. carica il video dal db
	}
	function getUrl (){
		//.. restituisce l'url del video caricato, oppure false
	}
}
$connection = new DbConnection();
$video = new Video ($connection, $_REQUEST['id']);
echo '<object... ><param ... '.$video->getUrl().'</object>';
L'echo può venire sostituito da una funzione della classe Video, anche se  
in genere si preferisce non mischiare le classi che leggono il db con  
quelle che visualizzano.
A mia opinione si può fare, a patto di tenere le classi semplici  
abbastanza da riuscire a spostare il metodo con facilità in un'altra  
classe in seguito.
Quindi, si, è quasi uguale a come hai fatto tu.
Magari prova a fare la pagina prima e a chiedere poi :-). Se l'hai già  
fatta, magari posta il codice.
O posta nuovamente nel momento in cui, fatte le prime classi, trovi  
qualche problema da cui non riesci ad uscire.
Il codice postato come vedi non comprende i dettagli piu' tecnici, che in  
fin dei conti non sono troppo influenti. L'importante è la strutturazione  
dei metodi pubblici, dove e come vengono memorizzati i valori interni (le  
variabili private) è meno importante, visto che si può sempre cambiare  
facilmente in seguito.
Tac
-- 
La netiquette prevede sign di al massimo quattro righe.
Purtroppo la mia sign in quattro righe non ci stà.

 Tac
ok direi che la cosa piu' rilevante è che "in genere si preferisce non
mischiare le classi che leggono il db con quelle che visualizzano."
e poi questo:
class DbConnection {
function __construct ($host, $user, $password){
//....
}
}
nel costruttore della DbConnection  passi tutti i parametri per la 
connessione??? non è piu' corretto settarli nella classe direttamente o in
un file di configurazione?
per il resto grazie, mi stai dando un grandissimo aiuto(a me pare che ci
sei sempre altro che caso) e son contento che le 2 soluzioni non siano poi
diversissime.
ciao


 diversissime.
Beh, visto che le soluzioni non erano poi così diverse direi che te la  
stai cavando da solo.


 E' un caso, è un caso.
sarà un caso ma è la terza volta che mi aiuti con le classi php(che non so
come mai dici di conoscere poco) e grazie ai tuoi consigli sono arrivato a
farmi un minimo di idea su cui iniziare a lavorare.
se avro' bisogno spero si realizzi di nuovo questo caso. intanto ti
ringrazio infinitamente


 ringrazio infinitamente
Speriamo di si.
