摘要:新數(shù)組的值將被插入到數(shù)組的開頭。和都是動(dòng)態(tài)調(diào)用函數(shù)的方法,區(qū)別在于參數(shù)的傳遞方式不同。方法三不使用魔法函數(shù)來實(shí)現(xiàn)只需要修改為函數(shù)即可重點(diǎn)在于,返回指針,方便調(diào)用后者函數(shù)。
在php中有很多字符串函數(shù),例如要先過濾字符串收尾的空格,再求出其長度,一般的寫法是:
strlen(trim($str))
如果要實(shí)現(xiàn)類似js中的鏈?zhǔn)讲僮鳎热缦裣旅孢@樣應(yīng)該怎么寫?
$str->trim()->strlen()
下面分別用三種方式來實(shí)現(xiàn):
方法一、使用魔法函數(shù)__call結(jié)合call_user_func來實(shí)現(xiàn)思想:首先定義一個(gè)字符串類StringHelper,構(gòu)造函數(shù)直接賦值value,然后鏈?zhǔn)秸{(diào)用trim()和strlen()函數(shù),通過在調(diào)用的魔法函數(shù)__call()中使用call_user_func來處理調(diào)用關(guān)系,實(shí)現(xiàn)如下:
value = $value; } function __call($function, $args){ $this->value = call_user_func($function, $this->value, $args[0]); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim("0")->strlen();
終端執(zhí)行腳本:
php test.php 8方法二、使用魔法函數(shù)__call結(jié)合call_user_func_array來實(shí)現(xiàn)
value = $value; } function __call($function, $args){ array_unshift($args, $this->value); $this->value = call_user_func_array($function, $args); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim("0")->strlen();
說明:
array_unshift(array,value1,value2,value3...)
array_unshift() 函數(shù)用于向數(shù)組插入新元素。新數(shù)組的值將被插入到數(shù)組的開頭。
call_user_func()和call_user_func_array都是動(dòng)態(tài)調(diào)用函數(shù)的方法,區(qū)別在于參數(shù)的傳遞方式不同。
方法三、不使用魔法函數(shù)__call來實(shí)現(xiàn)只需要修改_call()為trim()函數(shù)即可:
public function trim($t) { $this->value = trim($this->value, $t); return $this; }
重點(diǎn)在于,返回$this指針,方便調(diào)用后者函數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30526.html
摘要:什么是鏈?zhǔn)疥?duì)列隊(duì)列是一種先進(jìn)先出的存儲(chǔ)結(jié)構(gòu)是一種特殊的線性表,于它只允許在表的前端進(jìn)行刪除操作,而在表的后端進(jìn)行插入操作。 什么是鏈?zhǔn)疥?duì)列 隊(duì)列是一種先進(jìn)先出的存儲(chǔ)結(jié)構(gòu),是一種特殊的線性表,于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作。通常隊(duì)列可以分為順序隊(duì)列和鏈?zhǔn)疥?duì)列兩種實(shí)現(xiàn),順序隊(duì)列顧名思義就是采用順序存儲(chǔ),如以數(shù)組方式來實(shí)現(xiàn),鏈?zhǔn)疥?duì)列采用鏈...
摘要:一個(gè)微型的實(shí)現(xiàn)的庫體積很小帶詳盡的注釋總共只有行支持鏈?zhǔn)秸{(diào)用支持關(guān)系前言最開始接觸是在學(xué)習(xí)的時(shí)候,那個(gè)時(shí)候覺得用操作數(shù)據(jù)庫真的是太方便了。但是已經(jīng)算是一個(gè)小型的庫了。同樣的還提供了簡寫的以及,等接口函數(shù)。 一個(gè)微型的PHP實(shí)現(xiàn)的AR庫 體積很小帶詳盡的注釋總共只有400行支持鏈?zhǔn)秸{(diào)用支持關(guān)系 前言 最開始接觸ActiveRecord是在學(xué)習(xí)Yii的時(shí)候,那個(gè)時(shí)候覺得用AR操作數(shù)據(jù)庫真的...
重點(diǎn)在于,返回$this指針,方便調(diào)用后者函數(shù)。 Operation.php
摘要:就是內(nèi)部作為全局函數(shù)的插件添加到內(nèi)核上去的。選擇器插件擴(kuò)充自己喜歡的一些選擇器。在插件里的,經(jīng)過了一些封裝處理,就是表示對(duì)象。調(diào)用時(shí),字體大小會(huì)運(yùn)用插件里的默認(rèn)值 jQuery插件的分類 jQuery插件有很多,有UI類,表單驗(yàn)證,輸入類,特效類,Ajax類,滑動(dòng)類,導(dǎo)航類,工具類,動(dòng)畫類等等。 jQuery的插件主要分為三類: 1、封裝對(duì)象方法的插件:也就是基于某個(gè)DOM元素的...
閱讀 2261·2021-10-09 09:41
閱讀 3409·2021-09-13 10:34
閱讀 1920·2019-08-30 12:59
閱讀 557·2019-08-29 17:27
閱讀 1063·2019-08-29 16:07
閱讀 2956·2019-08-29 13:15
閱讀 1306·2019-08-29 13:14
閱讀 1562·2019-08-26 12:18