SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Windows環境でのPerlとPHPの連携

PHPを使ったPerlスクリプトの実行、パラメータの受け渡しなど

オブジェクト指向の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 )

次のページ
PHPオブジェクトのメンバをPerlに渡す

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Octavia Andreea Anghel(Octavia Andreea Anghel)

経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4169 2009/08/03 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー