[PHP]メソッドチェーン

Pocket

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;
	}
}

実行結果

&lt;HELLO, PHP!&gt;

メソッドの返り値を「return $this;」とすることで処理後のオブジェクトを次のメソッドに渡しています。 行っている内容は下と同じですが順序が明確になりすっきりと書くことができます。

echo htmlspecialchars(strtoupper(str_replace('World', 'PHP', '<Hello, World!>')),
	ENT_QUOTES, 'UTF-8');

Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です