您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)怎么在php中使用鏈式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
鏈式寫法在很多面向?qū)ο蟮木幊陶Z言都存在,個人簡單理解就是鏈表,確實和鏈表的使用很相識。this指針是鏈式操作的基礎(chǔ)。
this指針在不同的編程語言中的功能差不多,具體的小細節(jié)不一樣。但是有一個基礎(chǔ)就是指向?qū)ο?函數(shù)/類本身。基于這個基礎(chǔ)就可以實現(xiàn)鏈式寫法。
以php為例。
在php類中this指針($this)指向類/對象本身,它就像一個繩子把類/對象和類的屬性、函數(shù)連接起來。并可以通過它來調(diào)用對應(yīng)的相應(yīng)的屬性和函數(shù)(方法)。如下圖所示:
php程序的demo:
<?php /** * Created by PhpStorm. * User: dell * Date: 2017/3/31 * Time: 21:42 */ /* *注釋的規(guī)范寫法:@param [參數(shù)類型] 參數(shù)名 參數(shù)解釋 * @return 返回值 [類型] 返回值名 返回值說明 */ class Tree{ private $id ; private $name; private $age; /* * * @param null * @return null * */ public function _construct() { //構(gòu)造函數(shù) } /* * * @param [array] $arr 參數(shù)1 * @return null * */ public function init( $arr = array() ) { //初始化函數(shù) $arrs = array(); //設(shè)置默認參數(shù) $arrs = [ 'id'=> 1, 'name'=> 'user', 'age' => 18 ]; if( !(is_array($arr)) ) { //如果傳進來的數(shù)據(jù)不是數(shù)組則默認是id $this->id = intval( $arr ); } $arrs = array_merge( $arrs , $arr );//合并數(shù)組 //給類的屬性賦值 $this->id = $arrs['id']; $this->name = $arrs['name']; $this->age = $arrs['age']; } /* * * @param [int] $data 參數(shù)1 * @return $this * */ public function setID( $data = 0 ) { //判斷是不是數(shù)字 $this->id =is_numeric( $data )? $data : intval($data) ;//判斷是否是數(shù)字,是賦值,否則轉(zhuǎn)為數(shù)字在賦值 return $this;//返回this指針 } /* * * @param [string] $data 參數(shù)1 * @return $this * */ public function setName( $data = 'user' ) { //判斷是不是數(shù)字 $this->name =is_string( $data )? $data : strval($data) ;//判斷是否是字符串,是賦值,否則轉(zhuǎn)為字符串在賦值 return $this;//返回this指針 } /* * * @param [int] data 參數(shù)1 * @return $this * */ public function setAge( $data = 18 ) { //判斷是不是數(shù)字 $this->age =is_numeric( $data )? $data : intval($data) ;//判斷是否是數(shù)字,是賦值,否則轉(zhuǎn)為數(shù)字在賦值 return $this;//返回this指針 } }; $tree = new Tree(); $array = array(); $array['id'] = 10; $array['name'] = 'admin'; $array['age'] = 20; $tree->init($array); var_dump($tree);//打印結(jié)果 $tree->setAge()->setID()->setName();//鏈式寫法 var_dump($tree);//在打印看鏈式寫法是否有效 ?>
輸出結(jié)果:
這上面這個demo中,用php類建了一棵樹tree,有id和name和age。通過初始化函數(shù)init去初始化屬性。然后通過鏈式寫法來給屬性賦值,最后打印結(jié)果驗證是否成功。
函數(shù)/方法能實現(xiàn)鏈式寫法的前提是返回值是this指針(php中return $this,js中return this,其他語言也類似)。只有這樣才能實現(xiàn)調(diào)用這個函數(shù)后返回this指針,沖邏輯來說,此時返回的是類本身,然后接著繼續(xù)調(diào)用函數(shù),又返回this指針,如此循環(huán)。
當然各個編程語言有不同的地方,比如c++是->,php->,而js或者jq則是. ;調(diào)用的形式不同但是原理一樣。
一點,有this指針,返回this指針,然后就能實現(xiàn)鏈式寫法并能循環(huán)使用->fun1(return this)->fun2(return this )->fun3(return this)…… 。
php是一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。
關(guān)于怎么在php中使用鏈式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。