Más contenido relacionado
La actualidad más candente (9)
Similar a PHP4の今 ~日本語対応と最近のトピックス~ (20)
PHP4の今 ~日本語対応と最近のトピックス~
- 7. PHP4の新機能:セッション
„ セッション機能のサポート
ƒ HTTPは状態を保存しない→セッションデータ保持が必要
ƒ PHP3ではPHPLIB等の外部ライブラリを使用
ƒ セッションIDによる管理→クライアント側に保存:
(1)クッキー、(2)GET
ƒ セッションデータ保存
(1)ファイル、(2)共有メモリ、(3)ユーザ定義(RDBMS等)
session_start(); // セッションを開始
print($counter);
$counter++;
session_register(”counter”); // セッション変数を登録
// session_register($counter);は間違い!
- 8. 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
- 9. 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 "$sizen";
$word = new COM("word.application");
$word->documents->add();
$word->selection->typetext(”Hello!");
$word->documents[1]->saveas("test.doc");
$word->quit();
Java PHP4
- 10. while( $row = sql_get_row($result_handle))
{
print query_result($row, "name");
query_free($row);
}
PHP4の新機能:リソース管理の強化
„ Reference Counting
ƒ リソースはポインタで管理され、コピーは行わない。
→高速化
ƒ 参照されなくなったリソースは自動的に開放される。
→メモリの節約、安定性の増大
PHP3では必要。
これを行わないとスクリプト実行終了
時までメモリが開放されない。
→PHP4では自動的に開放される。
- 11. PHP4の新機能:ライブラリ拡張の強化
„ PHP4では拡張機能の組込手順が統一され,共有ライブラリ化も容易
に。
„ 組込モジュール
„ 共有モジュール
$ tar xzvf foo.tar.gz # アーカイブ解凍
$ cd foo # モジュールソースに移動
$ phpize # 構築環境設定
$ ./configure [--options] # makefile等を作成
$ make install # 構築&インストール
php.ini で extension=foo.so を指定すれば起動時にロードされる。
$ cd path-to-php-4.0 # PHP4のソースディレクトリに移動
$ tar xzvf foo.tar.gz -C ext/ # アーカイブ解凍
$ ./buildconf # 構築環境設定
$ ./configure [--options] # makefile等を作成
$ make install # 構築&インストール
- 14. PHPとデータベースの連携
„ 処理の流れ
„ 持続的接続 (Persistent Connection)
ƒ 同一ホスト、同一ユーザの接続がすでにオープンされている場合は
、既存の接続を用いる。
→ 特にOracleのように接続負荷が大きい場合に効果的
$conn = sql_connect ($hostname); // 接続をオープン
$result = sql_query(”select * from tablename”,$conn); // クエリーを実行
while( $row = sql_get_row ($conn,$result)){ // レコードを取得
print query_result ($row, “name”); // カラムを表示
}
- 16. 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
- 17. PHPと標準クラス:PHPLIBの使用例
„ PHPlibの認証:Basic認証との違い
ƒ Basic認証ではカスタマイズ不可:有効期限設定、入力データ項目変更
ƒ パスワードがそのままネットワーク上を流れてしまう。
→チャレンジレスポンス認証:JavaScriptによりパスワードをMD5ハッシュ化
„ 使用例
<?php // local.inc にてサブクラスを作成しておく
// セッション・認証・パーミッション機能付ページをオープン
page_open(
array("sess"=>"Foo_Session","auth"=>"Foo_Callenge_Auth","perm"=>"Foo_Perm"));
$sess->register("counter"); // セッション変数登録
print ++$counter;
if($perm->have_perm("admin")){ // 権限チェック
echo "あなたは管理者権限を保有しています。";
}
page_close(); // セッション・認証ページを終了
?>
- 18. 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の指定方法: データベース種類://ユーザ名:パスワード@ホスト名/データベース
- 20. PHPとPDF
„ PDF (Portable Document Format)
ƒ 電子文書フォーマットの標準
ƒ PDF-APIにより動的にPDFを作成可能
„ API:PDFlib,ClibPDF
ƒ 日本語に対応(PDFlib:3.0以降,ClibPDF:2.0以降)
ƒ PDFのマージには未対応
ƒ ライセンス: 非商用は無料、商用利用は有償
- 22. 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
私の名前は 太郎
です。
使用例
- 23. 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