⊗ppOpAdPBR 23 of 107 menu

Μετάδοση αντικειμένων με αναφορά στην αντικειμενοστρεφή προγραμματισμό στην PHP

Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση User:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Ας υποθέσουμε ότι δημιουργούμε ένα αντικείμενο αυτής της κλάσης:

<?php $user = new User('john', 30); ?>

Φανταστείτε τώρα την ακόλουθη κατάσταση: θέλετε να αντιγράψετε την τιμή της μεταβλητής $user σε κάποια άλλη μεταβλητή, για παράδειγμα $test.

Εάν δεν μιλούσαμε για αντικείμενα, αλλά για πρωτογενείς τύπους, δηλαδή για συμβολοσειρές, αριθμούς, πίνακες κ.λπ, τότε στη μεταβλητή $test θα εισερχόταν αντίγραφο της τιμής της μεταβλητής $user.

Αυτό σημαίνει ότι οι αλλαγές σε οποιαδήποτε από τις μεταβλητές στο μέλλον δεν θα άλλαζαν την τιμή της άλλης μεταβλητής. Ας δούμε ένα παράδειγμα:

<?php $user = 1; $test = $user; // στη μεταβλητή $test τώρα υπάρχει 1 $test = 2; // στη μεταβλητή $test τώρα υπάρχει 2, ενώ στη $user - ακόμα 1 ?>

Με τα αντικείμενα είναι διαφορετικά - κατά την εγγραφή σε άλλη μεταβλητή τα αντικείμενα δεν αντιγράφονται, αλλά μεταδίδονται με αναφορά: αυτό σημαίνει ότι και οι δύο αυτές μεταβλητές έχουν ως τιμή το ίδιο αντικείμενο. Αυτό έχει σημαντική συνέπεια: εάν αλλάξετε ορισμένες ιδιότητες του αντικειμένου χρησιμοποιώντας μια μεταβλητή, στη δεύτερη μεταβλητή θα εμφανιστούν οι ίδιες αλλαγές.

Ας δούμε στην πράξη. Δημιουργήστε ένα αντικείμενο χρήστη:

<?php $user = new User('john', 30); ?>

Αντιγράψτε το αντικείμενο σε άλλη μεταβλητή:

<?php $test = $user; ?>

Αλλάξτε την ιδιότητα name στη μεταβλητή $test

<?php $test->name = 'eric'; ?>

Ας ελέγξουμε ότι άλλαξε το κοινό αντικείμενο. Εμφανίστε την ιδιότητα name από τη μεταβλητή $user:

<?php echo $user->name; // θα εμφανίσει 'eric'! ?>

Δημιουργήστε την κλάση Product, στην οποία θα υπάρχουν οι ακόλουθες ιδιότητες: name, price.

Δημιουργήστε ένα αντικείμενο της κλάσης Product, καταγράψτε το στη μεταβλητή $product1.

Αντιγράψτε την τιμή της μεταβλητής $product1 στη μεταβλητή $product2. Ελέγξτε ότι και οι δύο μεταβλητές αναφέρονται στο ίδιο αντικείμενο.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη