最新PHP事情 (2000年7月22日,PHPカンファレンス)

22
最新PHP事情 ~新バージョンPHP4のご紹介とPHPXML等への 応用について~ 日本PHPユーザー会 http://www.php.gr.jp/ 廣川 <[email protected]> <[email protected]> 日時:2000722日(土曜日)13:5015:10 会場:大田区産業プラザ 小展示場

Transcript of 最新PHP事情 (2000年7月22日,PHPカンファレンス)

最新PHP事情 ~新バージョンPHP4のご紹介とPHPのXML等への

応用について~

日本PHPユーザー会 http://www.php.gr.jp/

廣川 類 <[email protected]> <[email protected]>

日時:2000年7月22日(土曜日)13:50~15:10会場:大田区産業プラザ 小展示場

1.PHP4の新機能2.Webアプリ構築の実際3.デモ(Linux)

PHP3の課題

マルチスレッド未対応 Native APIがApacheのみ

大規模コードでの速度低下 スクリプトの逐次実行

セッション管理の欠如 PHPlib等の外部ライブラリによるサポート

PHP4では…

より高機能に

セッション、OOP(クラス、Java、COM等)の強化

より安定に

リソース管理の強化:マルチスレッド対応、管理自動化

より簡単に

拡張モジュールの標準化、標準クラスの整備

PHP4の新機能

Zend Engine

複数Webサーバ対応

実行時コンパイラ

リソース管理強化

• マルチスレッド化

• 管理自動化

信頼性の向上

高速化

大規模アプリ対応

PHP

Zend Add-on 標準クラス(PEAR)

セッション機能言語強化(PHP3上位互換)

PHP4の新機能:セッション

セッション機能のサポート HTTPは状態を保存しない→セッションデータ保持が必要

PHP3ではPHPLIB等の外部ライブラリを使用

セッションIDによる管理→クライアント側に保存:(1)クッキー、(2)GET

セッションデータ保存(1)ファイル、(2)共有メモリ、(3)ユーザ定義(RDBMS等)

session_start(); // セッションを開始print($counter);$counter++;session_register(”counter”); // セッション変数を登録 // session_register($counter);は間違い!

PHP4の新機能:言語の拡張

foreach文

ヒア・ドキュメント

reset( $arr );while( list( , $value ) = each( $arr ) ) { echo "Value: $value<br>\n";}

foreach( $arr as $value ) { echo "Value: $value<br>\n";}

print <<<EOS Hello! This is a pen!EOS;

PHP3 PHP4

PHP4の新機能:外部オブジェクト

Javaのサポート:サーブレット、クラス

COM(Common Object Module)

import java.io.*;...File f = new File (filename);long size = f.length ();System.out.println (size);

$f = new Java("java.io.File",$filename);$size = $f->length ();echo "$size\n";

$word = new COM("word.application");$word->documents->add();$word->selection->typetext(”Hello!");$word->documents[1]->saveas("test.doc");$word->quit();

Java PHP4

while( $row = sql_get_row($result_handle)) { print query_result($row, "name"); query_free($row); }

PHP4の新機能:リソース管理の強化

Reference Counting リソースはポインタで管理され、コピーは行わない。

→高速化

参照されなくなったリソースは自動的に開放される。

→メモリの節約、安定性の増大

PHP3では必要。これを行わないとスクリプト実行終了時までメモリが開放されない。→PHP4では自動的に開放される。

PHP4の新機能:Zendアドオン

Zend Optimizer スクリプトコードの最適化により大幅に高速化

現在RC1版リリース中

Zend Cacheコンパイル後のコードをメモリ上にキャッシュ→コンパイル、ロードの時間を節約

Zend Compiler スクリプトコードの隠蔽が可能

→企業ユーザ、商用アプリ開発者にメリット

1.PHP4の新機能2.Webアプリ構築の実際3.デモ(Linux)

PHPと標準クラス

なぜクラスの標準化が必要か?

背景:

PHP組込関数ではWebアプリに必要な機能を実装できない。

→ユーザ関数として作成・配布

→同一機能・複数実装による非効率、コード仕様が不統一

クラス標準化の試み

PHPlib :PHP Base Library

PEAR

PHPと標準クラス:PHPLIBの概要

機能 DB抽象化: DB_Sqlクラス

PostgreSQL,MySQL,Oracle,ODBC,...をサポート

セッション管理: Sessionクラス

クッキーまたはGET変数を使用

認証:Authクラス チャレンジレスポンス認証、有効時間を指定可能。

パーミッション管理:Permクラス ユーザ保有権限(管理者、一般ユーザ)毎のアクセス管理

ユーザ管理:Userクラス

テンプレート:Templateクラス

資料:PHPlibドキュメント(翻訳版)http://www.php.gr.jp/php/phplib/

PHP

DB_sql

Session

Auth

Perm User

PHPと標準クラス:PEAR クラスの標準化 → PerlのCPAN, TeXのCTAN 機能

DB: DB抽象化クラス(MySQL,PostgreSQL,ODBC,...) FILE: ファイル操作

使用例

<?php // PEAR/DB サンプル$dsn = "odbc://nobody:nobody@test"; // ODBC// $dsn = "pgsql://nobody:nobody@localhost/test"; // PostgreSQL$obj = DB::connect($dsn); // データベースに接続$res = $obj->simpleQuery(“select * from product”); // クエリ実行while($row = $obj->fetchRow($res)){ // 結果を取得・表示 print join(":",$row) . "<BR>\n";}?>

DSNの指定方法: データベース種類://ユーザ名:パスワード@ホスト名/データベース

PHPとXML

SAXパーサ:EXPATApache標準、各タグに処理用のコールバック関数を定義

DOMパーサ:LIBXMLGNOME標準、DOM(Document Object Model)

XSLTパーサ(開発中)

Javaインターフェース: Saxon、Cocoon2

PHP拡張モジュール:Sablotron、Xalan/C(予定)

PHPとPDF

PDF (Portable Document Format) 電子文書フォーマットの標準

PDF-APIにより動的にPDFを作成可能

API:PDFlib,ClibPDF 日本語に対応(PDFlib:3.0以降,ClibPDF:2.0以降) PDFのマージには未対応

ライセンス: 非商用は無料、商用利用は有償

PHPとイメージ

イメージを動的に生成可能

画像フォーマット:PNG,JPEG,WBMP,XBM (,GIF) TrueTypeフォントを使用可能

イメージ情報の取得

サイズ等の基本情報の取得

EXIF情報を取得可能

Shockwave Flashファイルの動的生成

PHPとテンプレート

テンプレートの概要 HTMLテンプレートにはPHPコードを書かずにタグのみを記述

PHPスクリプトによりタグに値を代入し、代入後のHTMLを表示

複数のテンプレートクラスが既に存在

FastTemplate:Perlから移植 PHPlibのtemplateクラス

PHP4用テンプレートエンジン:作成中

$tpl = new Template(); // インスタンスを作成$tpl->set_file("mytemp","mytemp.ihtml"); // テンプレート読込$tpl->set_var("name","太郎"); // タグ"name"に値を代入$tpl->parse("output1","mytemp"); // テンプレートを処理$tpl->p("output1"); // 出力

私の名前は {name} です。

テンプレートmytemp.ihtml

私の名前は 太郎 です。

使用例

PHPに関する情報源

関連URL(英語) PHP http://www.php.net/ Zend http://www.zend.com/ PHPBuilder http://www.phpbuilder.com/ DevShed http://www.devshed.com/Server_Side/PHP/ PHP Function Table http://www. zend.com/phpfunc/

関連URL(日本語) 日本PHPユーザ会 http://www.php.gr.jp/ 広川のページ http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/

メーリングリスト 日本語ML:php-jp,ユーザ会,国際化

英語ML:[email protected] php-general,php-windows,php-i18n,php-db,php-dev,php-pear,php-kb

まとめと課題

PHP4の新機能

より高機能に:セッション、Java、COM等のサポート

より安定に:リソース管理の強化

より簡単に:拡張の簡単化、標準クラスの整備

今後の課題

PHP国際化

XML/XSLT、Templateのネーティブサポート

アプリケーションサーバー化

1.PHP4の新機能2.Webアプリ構築の実際3.デモ(Linux)

PHPに関するデモ(Linux)

(1)PHP全般

(2)全文検索エンジン(Namazu)

(3)テンプレート:PHPlib

(4)認証、許可属性:PHPlib

(5)データベースとの連携(PEAR/DBの使用例)

(6)PDFドキュメントの動的生成

(7) Shockwave Flashの動的生成