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