最近在讀《php核心技術(shù)與最佳實(shí)踐》這本書,書中第一章提到用__call()方法可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的字符串鏈?zhǔn)讲僮鳎热?,下面這個(gè)過濾字符串然后再求長(zhǎng)度的操作,一般要這么寫:
strlen(trim($str));
那么能否實(shí)現(xiàn)下面這種寫法呢?
$str->trim()->strlen();
下面就來試下。
鏈?zhǔn)讲僮鳎f白了其實(shí)就是鏈?zhǔn)降恼{(diào)用對(duì)象的方法。既然要實(shí)現(xiàn)字符串的鏈?zhǔn)讲僮鳎敲淳鸵獙?shí)現(xiàn)一個(gè)字符串類,然后對(duì)這個(gè)類的對(duì)象進(jìn)行調(diào)用操作。我對(duì)字符串類的期望如下:(1)當(dāng)我創(chuàng)建對(duì)象時(shí),我可以將字符串賦值給對(duì)象的屬性,并且可以訪問這個(gè)屬性讀取值;(2)我可以調(diào)用trim() 和strlen()方法;(3)我還可以這么調(diào)用方法$str->trim()->strlen()。
上面的第(1)條,是一個(gè)字符串類的基本要求。先把這個(gè)實(shí)現(xiàn)了:
1 class String 2 {