Newsgroup: it.comp.www.php
Titolo: [OOP] ciclo di vita di un oggetto

Da poco ho ripreso in mano questo fantastico linguaggio, con cui ho fatto in
passato diversi progetti universitari.
Oltre al necessario aggiornamento, ho alcune lacune, ad esempio la
programmazione OO in php. Programmo da diversi anni in java e ragionare ad
oggetti per me č una consuetudine, il ciclo di vita di un oggetto č pane
quotidiano. Non cosě in php.
Ad esempio: se in uno script creo un istnza di una classe, qual'e' il suo
ciclo di vita? se volessi ad esempio creare un oggetto secondo il pattern
del singleton come posso fare?
Il problema č che in java sono abituato ad avere come riferimento la JVM, il
singleton č relativo ad un istanza di JVM.
Sto studiando in generale il manuale di php, ma per quanto riguarda la OOP č
un po scadente, mi potete consigliare qualcosa?
Grazie mille a tutti.
-- 
Ciao e buon lavoro,
  Renato
---- 
Renato Eschini
   Inera srl
   Via Vespucci 41
   56100 Pisa
   Tel:         (+39) (0)50 2201218
   WWW:         
http://www.inera.it

 la OOP h un po scadente, mi potete consigliare qualcosa?
In che cosa sarebbe scadente?
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 In che cosa sarebbe scadente?
Ciao Setec,
 grazie della risposta, io mi riferisco al manuale ufficiale su 
www.php.net
,
ho trovato nei capitoli 14 e 15 (oop in php 4 e php4) uno scarso aiuto nel
comprendere la oop in php, nn ho trovato come ti dicevo il ciclo di vita di
un oggetto(avevo intuito si trattasse del ciclo di vita dello script).
Ciao e grazie.


 ciclo di vita dello script).
Gli oggetti PHP non hanno nulla di diverso dalla variabili PHP per cui
i cicli di vita e la visibilita' sono gli stessi.
Anche nella pagine JSP/servlet e' cosi'.


 Anche nella pagine JSP/servlet e' cosi'.
Ok, riguardo agli script si, il problema che pero' mi ha fatto sorgere un
sacco di dubbi è questo:
è possibile creare una sorta di ConnectionPool per l'accesso al DB? Vorrei
creare un oggetto istanziabile solo una volta in cui creare le connessioni
al db e gestire gli accessi a questo oggetto. Un oggetto così in java, lo
potrei creare senza troppi problemi banalmente con un singletton che mi
gestisce l'accesso al insieme di connessioni, ad esempio in una servlet o in
un altra classe lo istanzio e poi ogni volta che faccio la .getIstance()
ottengo il solito oggetto perche sono sulla solita JVM, quindi chiamo un
getConnection o un relaseConnection (per un connection pool molto banale).
In php, innanzitutto ha senso fare un a cosa di questo tipo(pool di
connessioni)? Motivo?
Eventualmente come si puo' realizzare?
Grazie Setec e agli altri per la disponiblità.


 Eventualmente come si puo' realizzare?
Esistono le connessioni persistenti, cerca nel manuale.


 connessioni)? Motivo?
No.
L'unico tipo di pooling che si riesce ad effettuare in PHP, di base, è 
quello molto rudimentale offerto dalle permanent connections.
Il motivo è dato dalla sottostante natura del web server: ogni richiesta 
HTTP viene servita da un processo diverso del server (il primo libero, o 
ne viene spawnato uno apposta). La "vita" di qualunque istanza di 
qualunque oggetto di php pertanto è sempre e comunque limitata 
all'esecuzione del singolo script; in altre parole, non esiste il 
concetto di "container" e l'unica persistenza che hai è quella che ti 
costruisci tu da applicazione.
Questo purtroppo è un grosso limite di php, e in buona parte è 
responsabile della non eccelsa scalabilità dello strumento: un utilizzo 
pesante di librerie OO, che necessariamente devono essere "incluse" e 
interpretate ad ogni singola pagerequest ha un costo computazionale 
pesante da pagare.
-- 
Fabrizio "Hermooz" Ermini

 pesante da pagare.
Ti ringrazioo, sostanzialmente era quello che volevo sentire: daro' un
occhiata alle persitent connection, era cmq + una curiosità che altro.
Ti ringrazioe e alla prox. ;)
Grazie anche a Setec ;-)



Senza voler aprire flame, e riconoscendo che comunque la risposta è
esauriente, le conclusioni mi sembrano affrettate e date da una persona che
conosce più Java che PHP.
L'assenza di scalabilità di PHP è un mito che ormai da tempo dovrebbe essere
stato sfatato. L'assenza di persistenza degli oggetti è voluta
(eventualmente posso spiegare) e le connessioni persistenti possono essere
uno strumento "rudimentale" ma più che adeguato all'ambito d'azione a cui
PHP è votato, cioè il WEB.
Gli strumenti per ovviare ai "grossi limiti" ci sono e si chiamano
compilatori di bytecode (quando sono necessari).
Le soluzioni Java sono scalabili ma di sicuro i costi iniziali (in termini
di performance) sono ben noti
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 di performance) sono ben noti
Bhè, sono del idea che ogni tipo di linguaggio abbia suoi pregi e diffetti:
sicuramente nn scrivero' mai un driver hw in java o php ne tanto meno
scrivero' una webapp a contenuto dinamico in assembler.
Potevo fare questo progetto in java, che conosco ottimamente e che uso per
lavoro, ho scelto php per un pregio che quest'utimo ha rispetto a java: se
modifico il sorgente nn devo riompilare ne tanto meno reinstanziare niente:
java è semi-interpretato (rispetto alla machina nativa) php lo è al 100%
(sempre rispetto alla macchina nativa).
In piu' è un linguaggio che mi affascina e che mi piace parecchio: il fatto
che nn esista un runtime relativo a tutta la webapp(che sia il container,
una vm o altro) puo' essere un limite e un vantaggio, dipende sempre dagli
scopi che uno ha.


 di performance) sono ben noti
In effetti, una larghissima parte dei progetti che ho visto realizzati 
in J2EE erano, a voler usare un termine educato, clamorosi overkill (aka 
"cannonate alle zanzare" ;-).
Tutta 'sta pappina per cosa? Mah, essenzialmente per dimostrarti che 
quello che dicevo non era poi così lontano da quello che dici te ;-)
Bye!
-- 
Fabrizio "Hermooz" Ermini


Sì stiamo dicendo più o meno la stessa cosa allora :)
Solo che io sono un po' più fiducioso nella capacità di tuning delle
connessioni persistenti
