[PHP]メソッドチェーン

Facebook にシェア
Delicious にシェア
LINEで送る
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:




  • This entry was posted in PHP and tagged . Bookmark the permalink.

    コメントを残す

    メールアドレスが公開されることはありません。