PDA

View Full Version : سوال: توضیحی راجبع این خط (تابع های تو در تو در کلاس)



areeef
دوشنبه 30 فروردین 1395, 22:08 عصر
باسلام، این لاین را نگاه کنید :


$customer = Customer::find()->where(['id' => 1])->one();

از کلاس customer به تابع استاتیک find رفتیم و بعدش چی شد ؟ از متد find رفت به تابع where ?

میشه لطفا توضیح بدهید یا بگویید چه مبحثی را باید در این مورد مطالعه کنم ؟ ممنون

مهرداد سیف زاده
سه شنبه 31 فروردین 1395, 01:04 صبح
کد رو میزارم خودتون اجرا بگیرید. اگر متوجه نشدید بیشتر توضیح بدم


<?php


/**
* query Class for init the query
*/
class Query
{
public $table;
public $where;

function __construct($table)
{
$this->table = $table;
}


public function where($condation){
$this->where = $condation;
return $this;
}




public function one(){
return "SELECT * FROM {$this->table} WHERE {$this->where} LIMIT 1";
}
}


/**
* customer class uses the query class for create command
*/
class Customer
{


public static $table = 'customer';




public static function find() {
return new Query(self::$table);
}
}




/**
* call customer class
*/
echo Customer::find()->where("id=1")->one();

plague
سه شنبه 31 فروردین 1395, 11:00 صبح
به این میگن method chaining
به عبارت خیلی ساده اگه متد شما یک شی رو برگردونه شما میتونی تو همون عبارت یه متد دیگه رو پشت بندش فراخانی کنی و به اصطلاحا متد دوم رو زنجیر کنی به متد اولی