最近在讀《php核心技術(shù)與最佳實(shí)踐》這本書,書中第一章提到用__call()方法可以實(shí)現(xiàn)一個(gè)簡單的字符串鏈?zhǔn)讲僮?,比如,下面這個(gè)過濾字符串然后再求長度的操作,一般要這么寫:

strlen(trim($str));

那么能否實(shí)現(xiàn)下面這種寫法呢?

$str->trim()->strlen();

下面就來試下。

鏈?zhǔn)讲僮?,說白了其實(shí)就是鏈?zhǔn)降恼{(diào)用對象的方法。既然要實(shí)現(xiàn)字符串的鏈?zhǔn)讲僮?,那么就要?shí)現(xiàn)一個(gè)字符串類,然后對這個(gè)類的對象進(jìn)行調(diào)用操作。我對字符串類的期望如下:(1)當(dāng)我創(chuàng)建對象時(shí),我可以將字符串賦值給對象的屬性,并且可以訪問這個(gè)屬性讀取值;(2)我可以調(diào)用trim() 和strlen()方法;(3)我還可以這么調(diào)用方法$str->trim()->strlen()。

上面的第(1)條,是一個(gè)字符串類的基本要求。先把這個(gè)實(shí)現(xiàn)了: