メタプログラミングやリフレクション楽しいです。
PHP で抽象化する。
<?php class Lion extends Animail{ }; class Leopard extends Animail{ }; $name = "Lion"; $animals[] = new $animal();
とかけます。これはPHPの可変変数や変数展開を上手に使った例で、DBのテーブル名からクラスを動的に生成したりと便利に使います。
Javaだとちょっと大変ですよ。
rubyでメタプログラミング
同じ事をRubyでやるにはどうするか。rubyはJavaの改良版*1なので、直接文字列をインスタンス化するPerlやPHPの邪道を真似ることができないん。文字列を元に、クラスをインスタンス化するにはどうするか
rubyで文字列からクラス名を作るサンプル
class Lion < Animal end class Leopard < Animal end c_name = Object.const_get "Lion" animals << c_name.new
これでとても便利になりますね
Factoryパターン
Factoryパターンもすぐに作れますね
def factory(str) return Object.const_get("#{str}Table").new end table = factory("Lion")
便利。
この点においてPHPは最強ですよね
*1:と個人的には思ってる