モジュール作る際のキモっぽい、可変変数

 モジュール拡張機能を持つスクリプトを作ろうと思った際に、どうやってユーザ定義的な関数を作るのだろうと思っていた。手持ちのPHPテキストには載っていなかったので、PHPマニュアルを読んでいた。ずっとクラスやらなんやらを読んでいたのだが、以下のような事が出来るらしい。

<?php
	function maid_function( $str ){
		echo('おかえりなさい、'.$str.'');
	}
	$func = 'maid_function';
	$func('南那津');
?>

 変数$funcに関数名maid_functionを入れればその関数$func( $str )として使えるらしい。じゃあ、クラスならどうなるか試してみた。

<?php
class maid {
	private $mastername;
	function __construct( $str ){
		$this->mastername = $str;
	}
	function hello(){
		echo('おかえりなさい、'.$this->mastername.'');
	}
}
	$func = 'maid';
	$class = new $func('南那津');
	$class->hello();
?>

 やっぱり通った。流石インタプリタ独特な感じ。なんて楽な言語なんだと思うと同時に、こういうのが重たい原因なんだろうなぁとか思う。つまり、関数を文字列として扱う限り、関数データベースは必要でその機構がどうやっているのやら。