Newsgroup: it.comp.www.php
Titolo: ma gli oggetti in php

Domandona: se dovessi fare un oggetto in php e lo istanziassi dopo
aver fatto un session_start (senza inviare un cookie 'esplicito')
l'oggetto rimarrebbe in memoria per tutta la sessione?
Rimarrebbe anche senza session_start?
Non rimane nemmeno se dovessi pregare in aramaico antico usando la
declinazione thailandese?
Lo chiedo perche' non ho mai usato gli oggetti in php, ma in compenso
tramite jsp ho scoperto la bellezza del passare gli oggetti in
session, e di rimando la domanda sulla 'vita' degli oggetti in php
dopo l'allocazione e' sorta spontanea....
Se rimangono basta che alloco l'oggetto a pagina index e quello vive
per tutto il tempo della 'sessione' ?
Grazie per le info

 Rimarrebbe anche senza session_start?
Se l'oggetto viene istanziato in sessione, resta li dove l'hai messo per 
tutta la durata della stessa.
Per l'avvio della sessione, vedi session.auto_start in Runtime 
Configuration.
	Francesco

 rimarrebbe in memoria per tutta la sessione? Rimarrebbe anche senza
No, devi infilarcelo tu salvandolo in $_SESSION (dopo il session_start()), 
e sarebbe accessibile (leggendo $_SESSION) solo dopo un session_start() (o 
se imposti le sessioni automatiche come dice Francesco).
In pratica, come tutto in PHP: quello che salvi in sessione e` in 
sessione, tutto il resto viene perso alla fine dello script.
In PHP4 devi stare anche attento a includere la definizione della classe 
prima di usare l'oggetto preso dalla sessione (la definizione di classe 
NON PUO` essere salvata in sessione), mentre in PHP5, se usi l'__autoload
() lo fa da solo.
Bye.

Alessandro Pellizzari ha usato la sua tastiera per scrivere :

Per ora sto facendo come se fosse php4.
Vediamo .... cosi' mi pare che funzioni, ma provo a chiedere qualche 
info in piu', per sicurezza ....
ora come ora ho un index.php (con un layout suo specifico) che 
all'inizio fa
<?
include('provaobj.php'); /** includo il file con la classe, e solo la 
classe definita... niente 'main' o che altro **/
session_start(); /** faccio partire la sessione **/
?>
poi nel body faccio
<? if ( !isset( $_SESSION['oggetto'] ) OR !is_object(
$_SESSION['oggetto'] ) ) {
	$_SESSION['oggetto']  = new MiaClasse('Parametro1');
}
echo $_SESSION['oggetto']->getDato();
?>
e' un codice tanto per fare, nella classe c'e' il costruttore che si 
aspetta il parametro, che poi uso nel getDato, che fa una return di 
'parametro1' ....
nelle pagine che vengono lanciate poi (tramite include... sto creando 
un finto cms decisamente moddato per le mie esigenze, e che usi i div) 
metto la include al file con la definizione di classe e rilancio il 
session_start ...
spero di aver fatto tutto giusto per ora (a me pare funzionare, ma 
magari sto aprendo dei buchi pazzeschi di sicurezza senza nemmeno 
saperlo....)
Se si', la domanda che sorge abbastanza spontanea e':
ma se io avessi uno script in una sottocartella (ad es: forum) includo 
la classe tramite path relativa e via, ma se ci fosse stata tipo una 
lettura da file e l'oggetto e' gia' in sessione, la lettura da file 
viene rifatta se lancio la funzione specifica di lettura da file?
Mi spiego meglio: volevo fare un menu' 'dinamico' che prendesse le voci 
da un file di testo. Senza oggetti un meccanismo di lettura da file a 
ogni cambio pagina era 'pericoloso' se si usavano le path relative 
(diciamo che odio le path assolute....).
Pero' adesso se un oggetto ce l'ho in sessione e carico un 'qualche 
cosa' (un array?) con le voci di menu' anche se dovessi includere un 
file da un altro dominio il menu' non dovrebbe ricaricarsi male, no? A 
meno che ovviamente io non lanci la funzione di 'carica menu'' quando 
sono in una path diversa da quella di index (la pagina che ora carica 
il menu').
Sto dicendo giusto?
Se si', per caricare l'array (interno all'oggetto) basta fare la 
lettura da file e caricare l'array, anche senza inizializzarlo per 
forza, mentre per displayare il menu' devo fare una funzione 
Stampa_menu e fare l'echo dei vari link e testi nella funzione ? 
Tenendo conto che le path di immagini e altro sono quelli della 'pagina 
corrente' ?
Spero di aver spiegato tutti i dubbi al meglio.
Credo siano domande cretine, ma sono i classici dubbietti idioti che 
vengono in mente mentre si fanno le cose... e di solito e' un bene che 
vengano in mente agli inizi del progetto, non alla fine ....
Ah, tanto che ci sono vi chiedo: ora come ora per miei impulsi 
megalomani sto tenendo la pagina index in 'ogni scelta di menu'', e a 
seconda di una variabile in GET faccio l'include di una pagina o di 
un'altra, a seconda della codifica md5 di questa variabile get (che 
leggo comunque tramite $_REQUEST.... forse un errore se lo usano dei 
malintenzionati, ma dato che sto usando degli if 'fissi'....).
E' esagerato mettere una codifica di un parametro che tipo puo' essere 
al massimo 'home' o 'test' o 'qualunquealtracosa' o robe del genere?
E ultima domanda, sarebbe meglio md5 o sha1 nel caso di codifiche per 
password e similari ?

 password e similari ?
Dipende da molti altri fattori (dove passa quell'hash, se qualcun'altro 
puo` leggere il database o uno di tali mezzi, ecc.)
Bye.

 puo` leggere il database o uno di tali mezzi, ecc.)
Ah, ok.
Grazie dell'aiuto!

 	$_SESSION['oggetto']  = new MiaClasse('Parametro1');
No, rischi comportamenti anomali.
$_SESSION[ 'oggetto' ] = serialize( new MiaClasse('Parametro1');
poi..
$oggetto = unserialize( $_SESSION[ 'oggetto' ] );
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

 Tac
ah, c'e' la serializzazione .... ma fa una serializzazione di un tipo 
preciso ?
Meglio se mi guardo quella parte di manuale ....
il bello e' che ho dovuto studiare jsp per sapere gia' anche solo che 
esistessero gli oggetti in php ....

 esistessero gli oggetti in php ....
Pft. Esagerato.
