تحقیقات
آموزش متد جادویی toString__
- توسط : علی حسین شهابی
- 0 نظر
با سلام و درود
میپردازیم به معرفی متد جادویی toString__ در آموزش php.
متد __toString به یک کلاس امکان تصمیمگیری درباره چگونگی رفتار در تبدیل به یک رشته میدهد .
متد toString__ زمانی فراخوانی می شود که آبجکت ایجاد شده از کلاس را echo نماییم. می دانید که در حالت معمولی اگر یه آبجکت از کلاس بسازیم و آن را echo کنیم با خطای رو به رو می شویم .
<?php
class Device {
private $name;// the name of the device
public $battery;// holds a Battery object
private $data = array();// stores misc. data in an array
public $connection;// holds some connection resource
}
$obj = new Device();
echo $obj;
- در خط 12 از کلاس Device یک آبجکت ساختیم
- در خط 13 اون آبجکت را echo کردیم .
خروجی :
Catchable fatal error: Object of class Device could not be converted to string in /var/www/html/tamrin/index.php on line 11
خب حالا اگر در کلاس از متد جادویی tostring__ استفاده کنیم دیگر این ارور ظاهر نشده و متد ما اجرا می شود .
مثال :
<?php
class Device {
private $name;// the name of the device
public $battery;// holds a Battery object
private $data = array();// stores misc. data in an array
public $connection;// holds some connection resource
public function __toString() {
// are we connected?
$connected = (isset($this->connection))?'connected':'disconnected';
// how much data do we have?
$count = count($this->data);
// put it all together
return $this->name.' is '.$connected.' with '.$count.' items in memory'.PHP_EOL;
}
}
$obj = new Device();
echo $obj;
خروجی :
is disconnected with 0 items in memory
- در کلاس بالا از متد tostring استفاده کردیم و ۲ چیز را برگشت دادیم به دلخواهمون. یکی اینکه آیا متدی به نام connection در کلاس موجود هست یا خیر و دیگری تعداد خانه های آرایه ی data در کلاس که برابر صفر می باشد .
مثال دیگر :
<?php
// Declare a simple class
class TestClass
{
public $foo;
public function __construct($foo) {
$this->foo = $foo;
}
public function __toString() {
return $this->foo;
}
}
$class = new TestClass('Hello');
echo $class;
خروجی :
Hello
این متد جادویی هم به پایان رسید برای بقیه متدها پست های بعدی را مشاهده نمایید .