PHP OOP-da obýektleri salgylama geçirmek
Bizde şeýle bir User klasymyz bolsun:
<?php
class User
{
public $name;
public $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
Bu klasyň obýektini döredeliň:
<?php
$user = new User('john', 30);
?>
Indi şu ýagdaýy gözüňiziň öňüne getiriň: siz
$user üýtgeýjisiniň bahasyny
beýleki bir üýtgeýjä, meselem
$test üýtgeýjisine berjek bolýarsyňyz.
Eger obýektler hakda däl-de, primitivler
hakda, ýagny setirler, sanlar, massiwler we ş.m.,
gürlän bolsak, onda $test üýtgeýjisine
$user üýtgeýjisiniň bahasynyň nusgasy
geçerdi.
Bu diýmek, soňky üýtgeşmeleriň haýsydyr bir üýtgeýjide beýleki üýtgeýjiniň bahasyny üýtgetmezdi. Mysala serediň:
<?php
$user = 1;
$test = $user; // $test üýtgeýjisinde indi 1
$test = 2; // $test üýtgeýjisinde indi 2, ýöne $user-da öňki ýaly 1
?>
Obýektler bilen iş başgaça - beýleki üýtgeýjiä ýazylanyňyzda obýektler köçürilmeýär, olara salgylama geçirilýär: bu diýmek, şol iki üýtgeýjiniň hem bahasy bir we şol bir obýektdir. Bunuň möhüm netijesi bar: eger obýektiň käbir aýratynlyklaryny bir üýtgeýji bilen üýtgetseňiz, ikinji üýtgeýjide şol üýtgeşmeler ýüze çykar.
Amaly işde görüň. Ulanyjy bilen obýekt dörediň:
<?php
$user = new User('john', 30);
?>
Obýekti beýleki üýtgeýjiä beriň:
<?php
$test = $user;
?>
name aýratynlygyny üýtgediň
$test üýtgeýjisinde
<?php
$test->name = 'eric';
?>
Umumy obýektiň üýtgendigini barlalyň.
name aýratynlygyny çap ediň
$user üýtgeýjisinden:
<?php
echo $user->name; // 'eric' çap eder!
?>
Product klasyny ýasalyň, onuň içinde
şu aýratynlyklar bolsun: name,
price.
Product klasynyň obýektini dörediň, ony
$product1 üýtgeýjisine ýazdyryň.
$product1 üýtgeýjisiniň bahasyny
$product2 üýtgeýjisine beriň. Barlaň
şunu, bu iki üýtgeýjiniň bir
we şol bir obýekde görkezýändigini.