Ðñïåéäïðïßçóç |
Αυτή η επέκταση είναι ΔΟΚΙΜΑΣΤΙΚΗ. Η συμπεριφορά της -- συμπεριλαμβανομένου και του ονόματος των συναρτήσεων της και οτιδήποτε άλλο είναι τεκμηριωμένο σχετικά με αυτή την επέκταση -- μπορεί να αλλάξει χωρίς ειδοποίηση σε μελλοντικές εκδόσεις της PHP. Χρησιμοποιήστε αυτή την επέκταση με δικό σας ρίσκο. |
Στην PHP 5, η σύγκριση αντικειμένων είναι πιο περίπλοκη απ'οτι στην PHP 4 και περισσότερο σε συμφωνία με αυτό που θα περιμένει από μια αντικειμενοστραφή γλώσσα. (όχι ότι η PHP 5 είναι μια τέτοια γλώσσα).
Όταν χρησιμοποιούμε τον τελεστή σύγκρισης (==), οι μεταβλητές των αντικειμένων συγκρίνονται με έναν απλό τρόπο, δηλαδή: δυο στιγμιότυπα μεταβλητών είναι ίσα αν έχουν τα ίδια attributes και τις ίδιεσς τιμές, και είναι στιγμιότυπα της ίδιας κλάσης, που ορίζεται στο ίδιο namespace.
Από την άλλη, όταν χρησιμοποιείται ο τελεστής ταυτότητας (===), οι μεταβλητές αντικειμένων είναι όμοιες μόνο και μόνο αν αναφέρονται στο ίδιο στιγμιότυπο της ίδιας κλάσης (σε ένα ιδιαίτερο namespace).
Ένα παράδειγμα θα ξεκαθαρίσει αυτούς τους κανόνες.
Two instances of the same class o1 == o2 : TRUE o1 != o2 : FALSE o1 === o2 : FALSE o1 !== o2 : TRUE Two references to the same instance o1 == o2 : TRUE o1 != o2 : FALSE o1 === o2 : TRUE o1 !== o2 : FALSE Instances of similarly named classes in different namespaces o1 == o2 : FALSE o1 != o2 : TRUE o1 === o2 : FALSE o1 !== o2 : TRUE |