L'operazione di confronto tra due oggetti, per quanto immediata possa sembrare, racchiude svariate competenze che vanno oltre al semplice concetto di confronto di variabili. Innanzitutto occorre sapere che in PHP esistono due operatori per confrontare due variabili tra di loro:
Ciò significa che, ad esempio:
$a = 10; $b = "10"; // restituisce true ($a == $b) // restituisce false ($a === $b)
Questa regola vale per il confronto tra tutti i tipi semplici di dato. Tuttavia, nel caso degli oggetti, nonostante gli operatori siano i medesimi, occorrono nuove regole per il confronto. Eccole:
Consci di queste nuove direttive, possiamo ora andare ad analizzare i casi pratici di confronti. Partiamo utilizzando l'operatore di uguaglianza:
function cmpobj($res) {
echo ($res) ? "yes" : "no";
}
class A {
public $a = 10;
public $b = 20;
}
class B {
public $a = 10;
public $b = 20;
}
$a = new A;
$b = new A;
$c = new A;
$d = new B;
$c->a = 20;
// stampa "yes" (stesse proprietà, stessi valori)
cmpobj($a == $b);
// stampa "no" (stesse proprietà, valori differenti)
cmpobj($a == $c);
// stampa "no" (stesse proprietà, valori differenti)
cmpobj($b == $c);
// stampa "no" (diverso tipo)
cmpobj($a == $d);
Vediamo ora l'operatore di identità, che anche nel caso degli oggetti, è assai più restrittivo del precedente:
$a = new A; $b = new A; $c = new A; $d = new B; $c->a = 20; // stampa "no" (stesse proprietà, stessi valori, istanze differenti) cmpobj($a === $b); // stampa "no" (istanze differenti) cmpobj($a === $c); // stampa "no" (istanze differenti) cmpobj($b === $c); // stampa "no" cmpobj($a === $d); $e = $a; // stampa "yes" (stesse istanze) cmpobj($a === $e)
Come possiamo notare, l'unico modo per ottenere un risultato positivo nel confronto tra oggetti utilizzando l'operatore di identità è che essi costituiscano la stessa istanza.
Per quanto rara possa essere l'operazione di confronto degli oggetti, essa presenta delle caratteristiche insolite rispetto alle semplici variabili, come abbiamo poututo vedere in questa lezione. Essere consci delle regole di confronto valide per le istanze è molto importante in uno scenario reale. Nella prossima lezione, l'ultima dello "step" degli extra, analizzeremo un nuovo operatore che ci permetterà di ottenere indicazioni sul tipo di un determinato oggetto.
Sessioni PHP: cosa sono, come si usanoDalla configurazione di PHP, alla gestione delle sessioni in un... |
Continuous Integration: automatizziamo i client con PhingContinuous Integration: automatizziamo i client con Phing. Esempi... |
Archiviazione delle applicazioni PHP con PharCome incorporare intere applicazioni PHP all'interno di un singolo... |
I traits in PHP 5.4Cosa sono, a cosa servono e come si unsano i traits, la novità per... |
PHP 5.4: il web server integratoImpara ad usare il web server integrato nella versione 5.4 di PHP:... |
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |