⊗ppOpAdPBR 23 of 107 menu

Obyektlərin PHP-də OOP-də istinadla ötürülməsi

Tutaq ki, bizə User sinfi verilib:

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

Tutaq ki, biz bu sinfin obyektini yaradırıq:

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

İndi aşağıdakı vəziyyəti təsəvvür edin: siz $user dəyişəninin qiymətini başqa bir dəyişənə, məsələn, $test-ə mənimsətmək istəyirsiniz.

Əgər söhbət obyektlərdən deyil, primitivlərdən, yəni sətirlərdən, ədədlərdən, massivlərdən və s.-dən gedirsə, onda $test dəyişəninə $user dəyişəninin qiymətinin surəti düşərdi.

Bu o deməkdir ki, sonradan hər hansı bir dəyişəndə edilən dəyişikliklər digər dəyişənin qiymətini dəyişməzdi. Bir nümunəyə baxaq:

<?php $user = 1; $test = $user; // $test dəyişənində indi 1 var $test = 2; // $test dəyişənində indi 2 var, $user-də isə hələ də 1 ?>

Obyektlərlə isə vəziyyət fərqlidir - başqa bir dəyişənə yazılanda obyektlər surətlənmir, əksinə istinadla ötürülür: bu o deməkdir ki, hər iki dəyişənin qiyməti eyni bir obyektdir. Bunun mühüm bir nəticəsi var: əgər obyektin hansısa xassələri bir dəyişən vasitəsilə dəyişdirilsə, ikinci dəyişəndə də eyni dəyişikliklər görünəcək.

Gəlin praktikada baxaq. İstifadəçi ilə bir obyekt yaradaq:

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

Obyekti başqa bir dəyişənə mənimsədək:

<?php $test = $user; ?>

$test dəyişənində name xassəsini dəyişək:

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

Gəlin ümumi obyektin dəyişdiyini yoxlayaq. $user dəyişənindən name xassəsini çıxadaq:

<?php echo $user->name; // 'eric' çıxardacaq! ?>

Product sinfini yaradın, hansında ki, aşağıdakı xassələr olacaq: name, price.

Product sinfinin obyektini yaradın, onu $product1 dəyişəninə yazın.

$product1 dəyişəninin qiymətini $product2 dəyişəninə mənimsədin. Hər iki dəyişənin eyni bir obyektə istinad etdiyini yoxlayın.

azbydeenesfrkakkptruuz