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;
?>
$test айнымалысындағы
name қасиетін өзгертіңіз
<?php
$test->name = 'eric';
?>
Ортақ нысанның өзгергенін тексерейік.
$user айнымалысынан
name қасиетін шығарайық:
<?php
echo $user->name; // 'eric' шығарады!
?>
Product класын жасаңыз, онда
келесі қасиеттер болады: name,
price.
Product класының нысанын жасаңыз,
оны $product1 айнымалысына жазыңыз.
$product1 айнымалысының мәнін
$product2 айнымалысына тағайындаңыз.
Екі айнымалының да бір нысанға сілтеме жасайтынын тексеріңіз.