Contenu connexe
Similaire à 最新PHP事情 (2000年7月22日,PHPカンファレンス) (20)
Plus de Rui Hirokawa (15)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
- 1. 最新PHP事情
~新バージョンPHP4のご紹介とPHPのXML等への
応用について~
日時:2000年7月22日(土曜日)13:50~15:10
会場:大田区産業プラザ 小展示場
日本PHPユーザー会 http://www.php.gr.jp/
廣川 類 <louis@cityfujisawa.ne.jp>
<hirokawa@php.net>
- 3. PHP3の課題
マルチスレッド未対応
Native APIがApacheのみ
大規模コードでの速度低下
スクリプトの逐次実行
セッション管理の欠如
PHPlib等の外部ライブラリによるサポート
- 4. PHP4では…
より高機能に
セッション、OOP(クラス、Java、COM等)の強化
より安定に
リソース管理の強化:マルチスレッド対応、管理自動化
より簡単に
拡張モジュールの標準化、標準クラスの整備
- 5. PHP4の新機能
Zend Engine PHP
リソース管理強化 複数Webサーバ対応
• マルチスレッド化 信頼性の向上
• 管理自動化 高速化
実行時コンパイラ 大規模アプリ対応
言語強化 セッション機能
(PHP3上位互換)
標準クラス(PEAR)
Zend Add-on
- 6. PHP4の新機能:セッション
セッション機能のサポート
HTTPは状態を保存しない→セッションデータ保持が必要
PHP3ではPHPLIB等の外部ライブラリを使用
セッションIDによる管理→クライアント側に保存:
(1)クッキー、(2)GET
セッションデータ保存
(1)ファイル、(2)共有メモリ、(3)ユーザ定義(RDBMS等)
session_start(); // セッションを開始
print($counter);
$counter++;
session_register(”counter”); // セッション変数を登録
// session_register($counter);は間違い!
- 7. PHP4の新機能:言語の拡張
foreach文
PHP3 PHP4
reset( $arr ); foreach( $arr as $value ) {
while( list( , $value ) = each( $arr ) ) echo "Value: $value<br>n";
{ }
echo "Value: $value<br>n";
}
ヒア・ドキュメント
print <<<EOS
Hello!
This is a pen!
EOS;
- 8. PHP4の新機能:外部オブジェクト
Javaのサポート:サーブレット、クラス
Java PHP4
import java.io.*; $f = new Java("java.io.File",
... $filename);
File f = new File (filename); $size = $f->length ();
long size = f.length (); echo "$sizen";
System.out.println (size);
COM(Common Object Module)
$word = new COM("word.application");
$word->documents->add();
$word->selection->typetext(”Hello!");
$word->documents[1]->saveas("test.doc");
$word->quit();
- 9. PHP4の新機能:リソース管理の強化
Reference Counting
リソースはポインタで管理され、コピーは行わない。
→高速化
参照されなくなったリソースは自動的に開放される。
→メモリの節約、安定性の増大
while( $row = sql_get_row($result_handle))
{
print query_result($row, "name");
query_free($row);
} PHP3では必要。
これを行わないとスクリプト実行終了
時までメモリが開放されない。
→PHP4では自動的に開放される。
- 10. PHP4の新機能:Zendアドオン
Zend Optimizer
スクリプトコードの最適化により大幅に高速化
現在RC1版リリース中
Zend Cache
コンパイル後のコードをメモリ上にキャッシュ
→コンパイル、ロードの時間を節約
Zend Compiler
スクリプトコードの隠蔽が可能
→企業ユーザ、商用アプリ開発者にメリット
- 13. PHPと標準クラス:PHPLIBの概要
機能
DB抽象化: DB_Sqlクラス Perm User
PostgreSQL,MySQL,Oracle,ODBC,...をサポート Auth
セッション管理: Sessionクラス
Session
クッキーまたはGET変数を使用
認証:Authクラス DB_sql
チャレンジレスポンス認証、有効時間を指定可能。 PHP
パーミッション管理:Permクラス
ユーザ保有権限(管理者、一般ユーザ)毎のアクセス管理
ユーザ管理:Userクラス
テンプレート:Templateクラス
資料:PHPlibドキュメント(翻訳版)
http://www.php.gr.jp/php/phplib/
- 14. PHPと標準クラス:PEAR
クラスの標準化 → PerlのCPAN, TeXのCTAN
機能
DB: DB抽象化クラス(MySQL,PostgreSQL,ODBC,...)
FILE: ファイル操作
使用例
DSNの指定方法: データベース種類://ユーザ名:パスワード@ホスト名/データベース
<?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";
}
?>
- 16. PHPとPDF
PDF (Portable Document Format)
電子文書フォーマットの標準
PDF-APIにより動的にPDFを作成可能
API:PDFlib,ClibPDF
日本語に対応(PDFlib:3.0以降,ClibPDF:2.0以降)
PDFのマージには未対応
ライセンス: 非商用は無料、商用利用は有償
- 17. PHPとイメージ
イメージを動的に生成可能
画像フォーマット:PNG,JPEG,WBMP,XBM (,GIF)
TrueTypeフォントを使用可能
イメージ情報の取得
サイズ等の基本情報の取得
EXIF情報を取得可能
Shockwave Flashファイルの動的生成
- 18. PHPとテンプレート
テンプレートの概要
HTMLテンプレートにはPHPコードを書かずにタグのみを記述
PHPスクリプトによりタグに値を代入し、代入後のHTMLを表示
複数のテンプレートクラスが既に存在
FastTemplate:Perlから移植
PHPlibのtemplateクラス
PHP4用テンプレートエンジン:作成中 テンプレート
使用例 mytemp.ihtml
$tpl = new Template(); // インスタンスを作成 私の名前は {name}
$tpl->set_file("mytemp","mytemp.ihtml"); // テンプレート読込 です。
$tpl->set_var("name","太郎"); // タグ"name"に値を代入
$tpl->parse("output1","mytemp"); // テンプレートを処理 私の名前は 太郎
$tpl->p("output1"); // 出力 です。
- 19. 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:xxx@lists.php.net
php-general,php-windows,php-i18n,php-db,php-dev,php-pear,php-kb
- 20. まとめと課題
PHP4の新機能
より高機能に:セッション、Java、COM等のサポート
より安定に:リソース管理の強化
より簡単に:拡張の簡単化、標準クラスの整備
今後の課題
PHP国際化
XML/XSLT、Templateのネーティブサポート
アプリケーションサーバー化