オブジェクト指向のPerl
オブジェクトはデータ(プロパティ)とコード(メソッド)の集合です。Perlのクラスは、構文的にはC言語の構造体(struct)と同じものであり、オブジェクトを処理するメソッドを提供するパッケージにすぎません。Perlのメソッドとは、最初の引数でオブジェクト参照を受け取るサブルーチンです。
次のアプリケーションは、シンプルなPerlクラスを作成し、それをインスタンス化したうえでシリアライズし、シリアライズされたオブジェクトをテキストファイル(file.txt)に書き込みます。このPHPスクリプトは、file.txtファイルを読み出し、それをPerlオブジェクトにデシリアライズし、結果を出力します。Perlのserialize関数とunserialize関数を使うには、PHP::SerializationというPerlモジュールをインストールする必要があります。このモジュールはこちらからダウンロードできます。ダウンロードしたPHP-Serialization-0.27/lib/PHP/Serialization.pmファイルをPHPディレクトリに保存します。サンプルのPerlスクリプト(oop.pl)からPHP::Serializationモジュールを使用するには、次の行をスクリプトの最初に追加します。
use PHP::Serialization;
このPerlスクリプトを実行するPHPスクリプト(oop.php)を以下に示します。
<?php
$result=shell_exec("C:\Perl\bin\perl.exe oop.pl");
//echo($result);
//Unserialize the file.txt content in PHP script
//and print the unserialized result
$object = unserialize(file_get_contents('file.txt'));
print_r($object);
?>
Perlクラスを作成し、それをfile.txtにシリアライズするPerlスクリプトを以下に示します。
use PHP::Serialization;
package Cars;
sub new
{
my $class = shift;
my $self = {
_Model => shift,
_Color => shift,
_Series => shift,
};
bless $self;
return $self;
}
#instantiating the Cars class
$object = new Cars( "Ferrari", "red", 898766);
#Listing the object's properties
#print "The car model is: $object->{_Model} <br />";
#print "The car color is: $object->{_Color} <br />";
#print "The car series is: $object->{_Series} <br />";
#serialize the $object variable
$var = PHP::Serialization::serialize($object);
#Write the serialized result into file.txt
open (DATA, ">file.txt");
print DATA "$var";
close(DATA);
このスクリプトが実行されると、PHP形式でシリアライズされたオブジェクトが含まれるfile.txtファイルが生成されます。このファイルの内容を以下に示します。
O:4:"Cars":3:{s:6:"_Series";i:898766;s:6:
"_Color";s:3:"red";s:6:"_Model";s:7:"Ferrari";}
最終的な出力結果は次のようになります。
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Cars [_Series] => 898766 [_Color] => red [_Model] => Ferrari )
