PHP'de OOP'de Sihirli toString Metodu
İnceleyeceğimiz ilk sihirli metodun adı __toString'dir.
Bir sınıf örneğini string'e dönüştürme girişiminde çağrılır.
Bunun ne anlama geldiğini anlayalım. Diyelim ki User
adında bir sınıfımız var:
<?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 sınıfın bir nesnesini oluşturalım:
<?php
$user = new User('john', 25);
?>
Şimdi oluşturulan nesneyi echo ile
yazdırmaya çalışalım:
<?php
$user = new User('john', 25);
echo $user;
?>
Bir nesneyi echo ile yazdırmaya çalışmak,
string'e dönüştürmektir. Bu durumda PHP hata
verecektir, çünkü nesneler bu şekilde doğrudan
string'e dönüştürülemez.
Hatayı gidermek için, bir nesneyi string'e
dönüştürme girişiminde PHP'ye ne yapacağını
açıkça söylemeliyiz. __toString sihirli
metodu tam olarak bu işe yarar.
Sınıfımızın kodunda bu metodu tanımlarsak,
bu metodun sonucu (yani return ile
döndürdüğü değer) nesnenin string temsili olacaktır.
Diyelim ki bir nesneyi echo ile yazdırmaya
çalıştığımızda, kullanıcının adının yazdırılmasını
istiyoruz. O halde __toString metodunu
yapalım ve içinde name özelliğinin değerini döndürelim:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Belirtilen metodu uygulayalım:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Test edelim:
<?php
$user = new User('john', 25);
echo $user; // 'john' yazdıracak - her şey çalışıyor!
?>
name ve surn özelliklerine sahip
bir User sınıfı yapın.
Nesneyi echo ile ekrana yazdırdığınızda,
kullanıcının adı ve soyadı olan bir string'in
yazdırılmasını sağlayın.