Considerare:Cosa significa = e significa in PHP?
$smarty =& SESmarty::getInstance();
Qual è la &
per?
Considerare:Cosa significa = e significa in PHP?
$smarty =& SESmarty::getInstance();
Qual è la &
per?
Passa per riferimento. Significa che non creerà una copia del valore passato.
See: http://php.net/manual/en/language.references.php (vedi risposta di Adamo)
Di solito, se si passa qualcosa di simile:
$a = 5;
$b = $a;
$b = 3;
echo $a; // 5
echo $b; // 3
La variabile originale ($a
) non verrà modificato se si modifica la seconda variabile ($b
). Se si passa per riferimento:
$a = 5;
$b =& $a;
$b = 3;
echo $a; // 3
echo $b; // 3
Anche l'originale viene modificato.
Quale è inutile quando si passa intorno agli oggetti, perché verranno passati per riferimento per impostazione predefinita.
Gli oggetti PHP5 non * sono * passati per riferimento per impostazione predefinita: piuttosto, un identificatore di oggetto viene passato per valore (simile alla semantica di 'riferimento' di Java); vedere il manuale per i dettagli: http://www.php.net/manual/en/language.oop5.references.php – Christoph
Grazie, sembra quasi inutile per me adesso – JasonDavis
È davvero un po 'inutile. Il motivo principale per cui le persone li usavano era non richiedere una funzione per restituire una variabile, ma invece basta modificare la variabile. –
In PHP 4, tipo di (a caso) associate due variabili.
$j = 'original';
$i =& $j;
$i = 'modified';
echo $j; // The output is 'modified'
Allo stesso modo ...
$j = 'original';
$i =& $j;
$j = 'modified';
echo $i; // The output is 'modified'
Alcune di queste è stato fatto un po 'meno sgradevole quando si tratta di oggetti in PHP 5, ma penso che il cuore è lo stesso, in modo da questi esempi dovrebbero essere ancora valido
References vengono utilizzati per creare alias di variabili ed è necessario utilizzare il vecchio sistema di oggetti in modo efficiente.
In PHP 4, gli oggetti si sono comportati come qualsiasi altro tipo di valore, vale a dire che l'assegnazione creerebbe una copia dell'oggetto. Se si desidera evitare ciò, è necessario utilizzare un riferimento come nel codice di esempio.
Con PHP 5, le variabili oggetto non contengono più l'oggetto stesso, ma un handle (identificatore oggetto AKA) e l'assegnazione copierà solo l'handle. L'utilizzo di un riferimento non è più necessario.
Se avete bisogno di qualcosa di simile nella ricerca futura di "operatori" nei riferimenti di aiuto di PHP, o un buon motore di ricerca. –
Si dovrebbe anche cercare qualcosa chiamato "Singleton". – cwallenpoole