PDA

View Full Version : [PHP 5] passaggio a oggetti


brianss
27-10-2008, 15:35
ciao ragazzi, ho una domanda da porre ai guru del php. come sapete php 5 introduce la programmazione orientata agli oggetti
ma ci sta una cosa che mi fa storcere il naso:

esempio:
la classe cane.php

<?php
/*
* modella un cane
*/

class Cane {
var $nome;
var $peso;

function Cane($nome, $peso){
$this->nome = $nome;
$this->peso = $peso;
}

public function Abbaia(){
print "bau bau";
}
}
?>


poi istanzio l'oggetto in index.php (stessa cartella)


<html>
<head>
<title>test</title>
</head>
<body>
<?php
// include("cane.php");
print "benvenuto ora creo un cane";
print "<br />";
$bestia = new Cane("bobby", 10);
$bestia->Abbaia();

?>
</body>
</html>




notate che include è commentanto!
infatti se non lo metto mi da errore!
ma è possibile che devo includere un file per istanziare un'oggetto?
e se questo oggetto lo devo richiamare in qualche altro file? un'altro include?

aiutatemi a trovare una risposta perche essendo abituato con java non mi torna proprio questa cosa

grazie

vizzz
27-10-2008, 19:20
si lo devi includere in ogni script che vuole far uso della classe

brianss
27-10-2008, 19:50
ma così non si appesantisce il server?

vizzz
27-10-2008, 20:08
ma così non si appesantisce il server?

no, php ha una gestione intelligente degli include...volendo potresti usare require_once che forse è ancora meglio:
http://it.php.net/require_once

brianss
27-10-2008, 20:42
ok ti ringrazio...
però questa cosa ancora non mi convince.
voglio dire se io istanzio un'oggetto nella pagina x e poi mi server lo stesso oggetto nella pagina y devo rifare l'include nella pagina y? poi però ho lo stesso oggetto creato in x?

Pappe
27-10-2008, 20:53
contando che ogni pagina è un "discorso" a sè rispetto alle altre direi che la cosa ha senso...

vizzz
27-10-2008, 20:58
quando termina l'esecuzione di uno script php (cioè di una pagina) tutti gli oggetti sono distrutti, questa è la natura della programmazione web, essendo il protocollo http stateless.
in aiuto ti possono venire le sessioni e i cookie, che ti permettono di avere dei dati lato client a cui avere accesso.

dany84
28-10-2008, 09:15
forse dirò una cavolata, ma avevo una curiosità:
è possibile in php memorizzare l'oggetto istanziato in una variabile di sessione, in modo da non dover includere la pagina in ogni altra pagina mi serva la classe? :stordita:

cionci
28-10-2008, 10:51
Metti in una pagina .php solo l'implementazione della classe non le istanze.
Dopo includi la pagina .php all'interno di tutte le pagine in cui vuoi usare l'oggetto.

brianss
28-10-2008, 16:50
infatti io faccio così..includo la classe dove mi serve istanziare l'oggetto..

ma poi se devo chiamare quel particolare oggetto da un'altra pagina?

anonimizzato
28-10-2008, 19:41
ok ti ringrazio...
però questa cosa ancora non mi convince.
voglio dire se io istanzio un'oggetto nella pagina x e poi mi server lo stesso oggetto nella pagina y devo rifare l'include nella pagina y? poi però ho lo stesso oggetto creato in x?

Un'applicativo web è spesso molto differente da un software stand-alone tradizionale proprio per via dell'ipertesto.

Per mantenere "in vita" gli oggetti puoi serializzarli e passarteli in sessione.

Necromachine
28-10-2008, 22:30
Se nel tuo script dovessi richiamare più moduli che richiedono la stessa classe, ti basta mettere un require_once() invece dell'include.