PHP でも Java などの言語同様メソッドチェーンを使った処理を書くことができます。
サンプルでは文字「<Hello, World!>」という文字に対して置換と加工を行ったものを出力しています。
<?php
$str = new MyString('<Hello, World!>');
echo $str->replace('World', 'PHP')->toUpperCase()->h();
class MyString
{
private $str;
function __construct($value){
$this->str = $value;
}
function __toString(){
return (string)$this->str;
}
function replace($old, $new){
$this->str = str_replace($old, $new, $this->str);
return $this;
}
function toUpperCase(){
$this->str = strtoupper($this->str);
return $this;
}
function h($encoding='UTF-8'){
$this->str = htmlspecialchars($this->str, ENT_QUOTES, $encoding);
return $this;
}
}
実行結果
<HELLO, PHP!>
メソッドの返り値を「return $this;」とすることで処理後のオブジェクトを次のメソッドに渡しています。 行っている内容は下と同じですが順序が明確になりすっきりと書くことができます。
echo htmlspecialchars(strtoupper(str_replace('World', 'PHP', '<Hello, World!>')),
ENT_QUOTES, 'UTF-8');