Newsgroup: it.comp.www.php
Titolo: simbolo ->

Ciao a tutti,
qualcuno riesce a spiegarmi in soldoni cosa significa e come si usa il 
simbolo ->  ???
Grazie 1000
bye bye 

 simbolo ->  ???
accesso ad un metodo o una proprieta' di una classe istanziata,
di contro l'accesso statico e' :: (detto anche T_PAAMAYIM_NEKUDOTAYM ;))

 simbolo ->  ???
Si usa nella programmazione ad oggetti, per far riferimento ad un metodo 
oppure una variabile d'istanza di un oggetto (per richiamare un metodo 
statico si usa i ::)
Prendi per esempio la classe dir 
http://se2.php.net/manual/en/class.dir.php
<?PHP
$d = dir("/etc/php5");
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
    echo $entry."\n";
}
$d->close();
?>
La prima riga definisce $d come un nuovo oggetto di tipo dir;
La riga $d->path "recupera" il contenuto della variabile path definita 
nella classe dir;
L'ultima riga richiama (applica) il metodo close() dell'oggetto $d
Il tutto, come hai richiesto, in soldoni (e con diverse inesattezze).
Per maggior chiarimenti sull'OOP in php (Object Oriented Programming) 
fai riferimento al manuale:
http://se.php.net/oop
 (php4)
http://se.php.net/manual/en/language.oop5.php
 (php5)
Aggiungo che solo dalla versione 5 si può iniziare a parlare di OOP.
	Francesco

 Francesco
Quindi in pratica...
$d->path
prende il valore della variabile d e lo passa alla funzione path che lo 
elabora e ne restuisce qualcosa, giusto??

 
Beh direi di no! La variabile $d è un oggetto di tipo dir, al suo 
interno conterrà n variabili di istanza (tra cui, per far l'esempio 
precedente, handle e path); queste variabili vengono inizializzate 
durante la fase di creazione dell'oggetto $d (attraverso un metodo 
chiamato costruttore) e successivamente vengono modificate attraverso 
altri metodi presenti nella definizione della classe stessa.
Quindi $d funge da "contenitore" e la "funzione" (nell'esempio è 
$d->read()) viene applicata all'oggetto "contenitore", ovvero alle 
variabili in esso contenute.
Chiedo venia per l'uso improprio di alcuni termini.
	Francesco

 Francesco
Allora, approfitto della tua bontà e sapienza un'ultima volta... mi sa che 
ho le idee confuse sulla differenza tra oggetto, metodo, funzione.
Da quanto ho capito un oggetto ha al suo interno vari metodi, tra cui anche 
il costruttore...
Ma la funzione allora? è un metodo? nn credo visto che una funzione puo' 
esistere da sola mentre il metodo no...
e allora che differenza c'e' tra funzione e motodo? forse non o ben chiaro 
quando conviene usare uno piuttosto che l'altro.
Ti ringrazio anticipatamente, davvero, chiarito questo mi ributto a 
capofitto sui manuali :)
bye bye

Francesco F , in data 19/12/2006 21:43 :

Ottimo esempio :)
(questo è tentare di insegnare a programmare, non far vedere quanto si è
bravi)
Bye

 
Nessuna differenza, solo che se si parla di "funzione" di una classe
allora si parla di metodo (tecnicamente parlando) mentre se parli di un
qualcosa "a se stante" allora puoi parlare di funzione
(sempre in soldoni e saputelli permettendo)

 (sempre in soldoni e saputelli permettendo)
La differenza è che non puoi richiamare una "funzione" descritta in una 
classe, senza usare l'operatore in oggetto. Di conseguenza puoi usare lo 
stesso nome del metodo per tutte le classi che vuoi e non entreranno in 
conflitto (puoi anche chiamare una funzione vera e propria con lo stesso 
nome).
es:
class Automobile {
    function accendi() {
        echo "giro la chiave della mia macchina<br>";
    }
}
class Frullatore {
    function accendi() {
        echo "Accendo il frullatore<br>";
    }
}
function accendi() {
    echo "Mi accendo una sigaretta";
}
$mycar= new Automobile();
$cucina= new Frullatore();
$mycar->accendi();
$cucina->accendi();
accendi();
ciao,
Luca(riello)