PHP OOP-daky __toString sïhrli metodu
Öwrenerisimiz ilkinji sïhrli metod __toString diýilýär. Ol
klassyň nusgasyny setire öwürmek synanyşygynyň üstünde çagyrylýar. Bu näme
diýmekdigini düşüneli. Bizde ýöne ýaly User diýen klass bolsun:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Bu klassyň obýektini döredeli:
<?php
$user = new User('john', 25);
?>
Indi bolsa döredilen obýekti echo arkaly çap etmäge synanyşalyň:
<?php
$user = new User('john', 25);
echo $user;
?>
Obýekti echo arkaly çap etmäge synanyşmak, ony setire öwürmekdir.
Bu ýagdaýda PHP ýalňyşlyk bildirer, sebäbi obýektler şeýle ýönekeý setire
öwrilmeýär.
Ýalňyşlygy aýyrmak üçin, biz PHP-e, obýekti setire öwürmek synanyşylanda
nämä etmelidigini aýdyşmaly. Munuň üçin __toString sïhrli metody
bar.
Eger bizim klassyň kodunda şeýle bir metod bolsa, onda bu metodunyň
nädijesi (ýagny, onuň return arkaly yzyna gaýtaran zat) obýektiň
setir görnüşi bolar.
Göçüräýeli, obýekti echo arkaly çap etmäge synanyşylanda,
ulanyjynyň adynyň çap edilmegini isleýäris. Şonuň üçin __toString
metoduny edeliň we onuň içinde name aýratynlygynyň bahasyny
yzyna gaýtaralyň:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Görkezilen metodi amala aşyralyň:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Barlayalyň:
<?php
$user = new User('john', 25);
echo $user; // 'john' çap eder - hemme işleýär!
?>
name we surn aýratynlyklary bolan User
klassyňyzy düzüň. Obýekti echo arkaly çap edende, ekranda
ulanyjynyň adynyň we familiýasynyň ýazylyşy çap edilmegini
üpjün ediň.