آموزش متد جادویی toString__

  • خانه
  • آموزش متد جادویی toString__
Image تحقیقات

آموزش متد جادویی toString__

با سلام و درود

میپردازیم به معرفی متد جادویی 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

این متد جادویی هم به پایان رسید برای بقیه متدها پست های بعدی را مشاهده نمایید .