PDA

View Full Version : یه سوال در مورد یک الگو ...؟



redhat2
چهارشنبه 27 دی 1391, 20:31 عصر
سلام به همه ی دوستان ، میخواستم یه سوال بپرسم ، اینکه من یکسری الگو دیدم به این صورت : معنی این الگو دقیقا چی هست :

$this->db->query("SELECT html FROM static_pages WHERE page = 'cities'")
یعنی الگو به این صورت :

example->example1->example2->example3(example4);
این معنیش دقیقا چی هست ؟

h00manb
چهارشنبه 27 دی 1391, 20:43 عصر
سلام
example4 ورودیه

example3 نام تابع هست

example2 و example1 و example کلاسهای تو در تو هستند

rezaonline.net
چهارشنبه 27 دی 1391, 21:08 عصر
یه مثال برات میزنم امیدوارم خودت بگیری

class example
{
private $num1,$num2;

public function sum($num1)
{
$this->num1 = $num1;
return $this;
}

public function with($num2)
{
$this->num2 = $num2;
return $this;
}

public function result()
{
return $this->num1 + $this->num2;
}

}

//-----\\
$example = new example;
echo $example->sum(1)->with(2)->result(); // out: 3

در کل باید $this رو بازگشت بدی داخل متد که بعنوان شی دوباره پذیرفته بشه .
کاربردشم بیشتر در ساختار کوئری بیلدرها هست .

خودمون چیز خوشکلیه اما زیاده روی نکنی از استفاده ازش :لبخند:

redhat2
چهارشنبه 27 دی 1391, 22:04 عصر
سلام
example4 ورودیه

example3 نام تابع هست

example2 و example1 و example کلاسهای تو در تو هستند
دقیقا ااین تابع چطوری حرکت میکنه ، از داخل به خارج یا از خارج به داخل ؟

rezaonline.net
چهارشنبه 27 دی 1391, 22:27 عصر
هر متد با توجه به آرگومانی که میگیره کار خودش رو انجام میده اما $this رو برمیگردونه تا بعنوان یک instance عمل کرده باشه .

کل متدها رو توی یک کلاس مینویسی

mtchabok
چهارشنبه 27 دی 1391, 22:45 عصر
سلام به همه ی دوستان ، میخواستم یه سوال بپرسم ، اینکه من یکسری الگو دیدم به این صورت : معنی این الگو دقیقا چی هست :

$this->db->query("SELECT html FROM static_pages WHERE page = 'cities'")
یعنی الگو به این صورت :

example->example1->example2->example3(example4);
این معنیش دقیقا چی هست ؟
example متغیر
example1 پروپرتی
example2 پروپرتی
example3 متد
example4 آرگومنت

یه چنین الگویی در برنامه های شئی گرا استفاده میشه به اینصورت که در هر پروپرتی لینکی به قابلیت دیگر وجود داره که مثلا براتون میزنم



<?php
class Application{
public $Controller;

public function __construct(){
$this->Controller = new Controller();
}
}

class Controller{
public $Action;

public function __construct(){
$this->Action = new Action();
}
}

class Action{
public $Argument = 'Hello World!';

public function Run($argument=null){
if(null!==$argument) $this->Argument = $argument;
echo $this->Argument;
}
}

$app = new Application();
$app->Controller->Action->Run('Hi :)');

rezaonline.net
پنج شنبه 28 دی 1391, 00:14 صبح
فکر کنم من اشتباه متوجه شدم .
پروپرتی با متد رو اشتباه گرفتم .
با عرض معذرت از استارتر جواب mtchabok (http://barnamenevis.org/member.php?170796-mtchabok) برای سوال شما صحیح است .