- 2006-12-21 (木) 23:15
- PHP
この記事の所要時間: 約 2分44秒
via MikeNaberezny.com » Fluent Interfaces in PHP
PHP5で採用された記述方法です。そう言えばすっかり忘れていました。
$obj->foo()->bar();
ってやつです。
使えるシーンは色々あると思いますが、同じデータに繰り返し操作を行う文字列の変換を例に書いてみました。
< ?php $str = ' Hello world!! '; echo str_replace('ELL', '123', strtoupper(trim($str))) . PHP_EOL; ?>
というのを
< ?php // 独自文字列クラス class StringClass { private $str = ""; public function __construct($str) { $this->str = $str; } public function toUpper() { $this->str = strtoupper($this->str); return $this; } public function toLower() { $this->str = strtolower($this->str); return $this; } public function strTrim() { $this->str = trim($this->str); return $this; } public function strReplace($search, $replace) { $this->str = str_replace($search, $replace, $this->str); return $this; } public function toString() { echo $this->str . PHP_EOL; } } $obj = new StringClass(" Hello world!! "); $obj->strTrim() ->toUpper() ->strReplace('ELL', '123') ->toString(); ?>
のように書けます。(文字列クラスが標準であれば良いのですが。。。)
ポイントは単にメソッドで$thisを返すだけです。
可読性も良いですし、メソッドの呼び出し順を入れ替えるのも容易です。美しいですしね;-)
ちなみに配列関数のように参照を返す関数でも同じような記述ができます。
< ?php $array = array(new DateTime('2006/12/21')); echo current($array)->format('Y/m/d') . PHP_EOL; ?>
- Newer: Flash Lite1.1とPHPセッションの連携
- Older: ORDB.org is shutting down
トラックバック:0
- このエントリーのトラックバックURL
- /blog/2006/12/php5_method.html/trackback
- Listed below are links to weblogs that reference
- Java風なメソッド呼び出し from Shin x blog