PDA

View Full Version : مقاله: Chaining in PHP



eAmin
یک شنبه 20 دی 1388, 13:30 عصر
سلام.

با توجه به دو آموزش زیر، تصمیم به پیاده سازی همین روش ( Chainable methods ) در PHP کردم.
توضیحات اضافی در اینمورد نمی دم و شما رو به خوندن این دو آموزش دعوت می کنم:

1. Syntax یک دستور جاوا اسکریپت (http://forum.majidonline.com/showpost.php?p=846621&postcount=9)
2. مقاله : مبحث Chainable در شی گرای (http://forum.majidonline.com/showthread.php?t=126547)

و کدهای PHP اینمورد:



class chain {

public function __construct($arg1="This is a very simple implementation of the Chaining in PHP!\n") {
echo nl2br((string)$arg1);
return $this;
}

public function foo($foo) {
echo (string)$foo;
return $this;
}

public function bar($bar) {
echo (string)$bar;
return $this;
}

public function baz($baz) {
echo (string)$baz;
return $this;
}
}

// how to use?
$chaining = new chain();
$chaining->foo("Foo ")->bar("Bar ")->baz("Baz");



قطعا این آموزش بدرد افراد مبتدی نمی خوره، و مطمئنن(!) افرادی که حرفه شون اینکار هست، خیلی راحت می تونن کدها رو درک کنند، پس نیازی به توضیح نیست.
هرچند که چیز خاصی هم توش دیده نمی شه!

امیدوارم، اولین آموزش من رو در سال جدید میلادی بپذیرید.
موفق باشید.

binyaft
یک شنبه 20 دی 1388, 16:25 عصر
خوب نمیشه یه توضیح مختصر بدین؟
فکر نکنم نیاز به وقت زیادی باشه

eAmin
سه شنبه 29 دی 1388, 22:13 عصر
خوب نمیشه یه توضیح مختصر بدین؟
فکر نکنم نیاز به وقت زیادی باشه
عذر می خوام، این پست شما رو تازه الان دیدم.

تا حالا با jQueryکار کردید؟ دیدید که چطور متدها رو می شه پشت سر هم بصورت زنجیروار صدا زد؟ البته در JavaScript، حالا همین روش در PHP پیاده سازی شده.
http://ejohn.org/blog/ultra-chaining-with-jquery/
مثال جاوااسکریپت:


jQuery("div").chain("hide", "slow")
.addClass("done")
.find("span")
.addClass("done")
.end()
.chain("show", "slow")
.removeClass("done")
.end()
.end();


درکل با این روش بجای اینکه شما بیاید و متدها رو به اینصورت صدا بزنید:


$chaining = new chain();
$chaining->foo("Foo ");
$chaining->bar("Bar ");
$chaining->baz("Baz");

بجای اون کار خیلی راحت مثل زنجیر متدها رو به هم می چسبونید:


$chaining = new chain();
$chaining->foo("Foo ")->bar("Bar ")->baz("Baz");


موفق باشید.