PHP, gli oggetti e i riferimenti

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Chi ha studiato in dettaglio il funzionamento dei riferimenti in PHP (che ormai vengono usati piuttosto poco, per fortuna) ha probabilmente letto da qualche parte che "in PHP gli oggetti sono sempre assegnati come riferimenti". Anch'io avevo dato questa cosa per scontata, finché ieri su IRC (##php su freenode.net) un utente ha chiesto dettagli proprio su questo argomento. Gli è stato risposto che in realtà gli oggetti non vengono assegnati come riferimenti, ma funzionano come se fosse così. Prendete per esempio questo codice:
PHP:
<?php
$a = new stdClass();
$b = $a;
$a = 'ciao';
var_dump($b);
?>
Se $b facesse davvero riferimento ad $a, allora a questo punto anche $b sarebbe "ciao", mentre invece mantiene il valore originale.

Prendete, però, questo esempio:
PHP:
<?php
$a = new stdClass();
$b = $a;
$a->foo = 'bar';
var_dump($b->foo);
?>
In questo caso il risultato è "bar", dunque la variabile $b sembrerebbe un riferimento.

In sintesi, possiamo dire che se cambia lo stato dell'oggetto contenuto in $a, allora cambia anche quello dell'oggetto contenuto in $b (e viceversa). Se invece cambia il valore di $a, quello di $b rimane immutato.

Per chi volesse approfondire: http://blog.golemon.com/2007/01/youre-being-lied-to.html.
 
Discussioni simili
Autore Titolo Forum Risposte Data
T [a pagamento] programmatore PHP che mi aiuti a migrare gli script da vecchia versione PHP a nuova Offerte e Richieste di Lavoro e/o Collaborazione 1
L [PHP] cambiare gli if in un url semplice PHP 1
M [PHP] Come gestire gli utenti online PHP 9
L [PHP] convertire gli url ad forma semplice PHP 3
A [PHP] Invio messaggio a tutti gli iscritti PHP 2
T [PHP] tornare alla pagina con gli input già compilati PHP 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
Z Esporta da PHP a EXCEL rimanendo gli ZERI PHP 3
E [PHP] GUMP: mostrare gli errori tramite array PHP 1
Trapano [PHP] Mappa con gli indirizzi PHP 3
S visualizzare gli ultimi post di phpbb nella mia home.php PHP 2
A Nascondere gli elementi di un form con php PHP 5
T controllare gli errori nel log di php PHP 1
M Per bloccare gli Ip indesiderati su php - nuke PHP 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0

Discussioni simili