متدهای زنجیره ای یا Method Chaning

Mr.Moqadam

New Member
متدهای زنجیره ای یا Method Chaning
در این آموزش قصد دارم نحوه ساخت متذهای زنجیره ای یا Method Chaning رو بهتون آموزش بدم.
حتمن توی استفاده از کلاسهای مختلف و فریم ورکها به متدهایی برخوردیم که به صورت زنجیره ای نوشته میشن.مثل زیر :
PHP:
<?php

echo $data->find()->where(' id = 1')->orderby('id DESC')->fetch();

?>
کلاس زیر رو در نظر بگیرید :
PHP:
<?php

class user

{

private $name ;

private $Lname;

public function setName($name)

{

$this->name = $name;

}

public function setLname($Lname)

{

$this->Lname = $Lname;

}

public function findMe()

{

echo "User Name is : $this->name and User Last Name is $this->Lname";

}

}

?>
برای استفاده از این کلاس به صورت زیر عمل میکنیم :
PHP:
<?php

$user = new User();

$user->setName = "Saeed";

$user->setLname("Moqadam");

$user->findMe();

?>
که خروجی به شکل زیر میشه :
User name is Saeed and User Last Name is Moqadam
استفاده از متدهای زنجیره ای
برای ساخت متدهای زنجیره ای باید به صورت زیر عمل کنیم :
PHP:
<?php

class user

{

private $name ;

private $Lname;

public function setName($name)

{

$this->name = $name;

return $this;

}

public function setLname($Lname)

{

$this->Lname = $Lname;

return $this;

}

public function findMe()

{

echo "User Name is : $this->name and User Last Name is $this->Lname";

}

}

?>
که به صورت زیر میشه ازش استفاده کرد :
PHP:
<?php

$user = new User();

$user->setName("Saeed")->setLname("Moqadam")->findMe();

?>
دیدید که برای ساخت چنین متدهایی کافیه در آخر هر متد یک شیء از کلاستون رو با استفاده از کلمه کلیدی $this رو برگردونید.
متدهای زنجیره ای درکلاسهای چندگانه
اگر توی یک پروژه چندتا کلاس مختلف دارین Method Chaning میتونه کار شما رو راحتتر کنه.برای این کار به کلاس زیر دقت کنید :
PHP:
<php

class ComplexPerson

{

public function setName($Name)

{

return new FindNames($Name);//Returns object of FindNames class.

}

public function setAge($Age)

{

$this->age = $Age;

return new FindAges($Age);//Returns object of FindAges class.

}

}

class FindNames

{

private $name;

public function __construct($n)

{

$this->name = $n;

}

public function printName()

{

echo "I am ".$this->n.".";

}

}

class FindAges

{

public function __construct($a)

{

$this->age = $a;

}

public function printAge()

{

echo "I am ".$this->age." years old.";

}

}

?>
برای استفاده از این کلاس به صورت زیر عمل میکنیم :
PHP:
$anotherMe = new ComplexPerson();

$anotherMe->setName("Saeed")->printName();

$anotherMe->setAge("24")->printAge();
میبینید که برای این کار فقط کافیه یک شیء از کلاس مورد نظر رو برگردونیم.
موفق باشید


منبع http://phpro.ir/?p=63
 

جدیدترین ارسال ها

بالا