Más contenido relacionado
La actualidad más candente (20)
Similar a PHPの今とこれから2008 (20)
PHPの今とこれから2008
- 3. PHP 4.3.11
・OOP機能大幅強化
・SQLite
・Webサービス
PHP 4.3.0
PHP 5.0.0 PHP 5.0.4
PHP 6.0
・高速化
・ PDO
・Unicode/i18n
・キャッシュ(APC)
・レガシー機能廃止
・名前空間
・ガベージコレクタ
・mysqlnd
バグ
修正
リリース済み
開発中
PHP 4.4.0
バグ修正
(バイナリ非互換)
バグ
修正
PHP 5.1.0
PHP 4.4.8
バグ
修正
PHP 5.1.5
バグ
修正
・filter/json/zip
・メモリ管理改良
PHP 5.2.0 PHP 5.2.6
PHPバージョン
PHP 5.3・ICU
・OpenID
・名前空間
・GC改良
~2008.8.8
- 6. PHP 5への移行
PHP4のサポート終了
2008/1/3リリースのPHP 4.4.8が最終版
2008/8/8まで致命的な
セキュリティ修正を実施
PHP 4:62%
(昨年:75%) on Nexen.net
GO PHP 5
アプリ開発者、ホスティング
2008/2/5 以降PHP5.2以上をサポート
PEAR: PEAR2でPHP 5以降のみサポート
http://www.gophp5.org/
19%
40%8%
28%
5%
4.3
4.4
5.1
5.2
other
- 7. PHP4→PHP5移行のポイント
オブジェクト(クラス)に関係する部分は要確認
ディープコピーを仮定したプログラム
オブジェクトの比較
E_STRICTによる構文互換性チェック
PHP 5.3でE_STRICTはE_ALLに含まれる。E_DEPRECATED追加
Zend Engine 1互換モード (PHP 5.3で廃止)
zend.ze1_compatibility_mode = Off
(E_STRICTを使用して非互換な部分を検出)
一部の関数の処理が非互換
参照 :PHP5への移行に関するPHPマニュアル
http://docs.php.net/manual/ja/migration5.php
- 8. PHP 5.2
2006/11リリース, 最新版(08/3):PHP 5.2.6
更なる高速化
stat(), implode(), str_replace(),シャットダウン
メモリ管理効率化
filter, zip, json エクステンション
機能追加・改良
PDO, SPL, xmlReader改良
Apache 2.2 対応(Win32)
- 9. PHP 5.3
2008/1リリース予定 -> 遅延中
PHP6までのつなぎ(=当面の本命)
PHP6 - (Unicode) + (pecl/intl)
ICUエクステンション: pecl/intl
Collator (文字列比較), 数値フォーマッタ
OpenSSLエクステンションにOpenIDサポート追加
-> Zend Framework 1.5でサポート
GC改良: 循環コレクタ
スキャナ(字句解析器)高速化: flexからre2cへ
名前空間: PHP 6からバックポート
ereg_*がPECLへ
- 10. PHP 6.0
Unicodeネーティブ対応
レガシーコード削除
register_globals, magic_*, safe_mode,ze1_*
エクステンション
PECLから追加:APC, fileinfo他
PECLへ移動:mime_magic他
MySQLND (MySQL Native Driver)
機能追加・改良
名前空間
ガーベッジコレクタ(cycle collector)
- 11. PHP 5の高速化
0
5
10
15
20
25
30
35
PHP 4.4 PHP 5.2 PHP 5.3 PHP 6.0
実行時間[s]
strcat(200000)
sieve(30)
nestedloop(12)
matrix(20)
heapsort(20000)
hash2(500)
hash1(50000)
fibo(30)
ary3(2000)
ary2(50000)
ary(50000)
ackermann(5)
mandel2
mandel
simpleudcall
simpleucall
simplecall
simple
• PHP 5.1/5.2 ZendEngine大幅に高速化
• PHP 5.2/5.3 メモリ使用効率化
php-src/Zend/bench.php
AMD64, 2GHz, Windows Vista
- 12. Late Static Binding
コンパイル時ではなく、実行時にスタティックイベントを処理
利点: (例えば)ActiveRecordを正しく実装できる
下位互換性なし
class ActiveRecord {
public static function getClass() {
return __CLASS__;
}
public static function find() {
echo self:: getClass();
}
}
class Foo extends ActiveRecord {
public static function getClass() {
echo __CLASS__;
}
}
Foo::find(); // ActiveRecord
class ActiveRecord {
public static function getClass() {
return __CLASS__;
}
public static function find() {
echo static:: getClass();
}
}
class Foo extends ActiveRecord {
public static function getClass() {
echo __CLASS__;
}
}
Foo::find(); // Foo
PHP <= 5.2 PHP >= 5.3
- 13. Namespace 名前空間
PHP 5.3でもサポート(PHP 6.0からバックポート)
namespace で名前空間を定義
変数/関数名衝突回避、長いクラス名の記述が不要に
DB_MySQL_Form_Row → (DB::MySQL::Form) Row
<?php
namespace My::Cal::Week;
class DateTime extends ::DateTime {}
?>
<?php
include 'mydate.php';
use My::Cal::Week::DateTime as DateTime;
$a=newDateTime(‘2008-07-21’);// 内部クラス
echo get_class($a); // My::Cal::Week::DateTime
?>
- 14. MySQL ND
DB I/F (libmysqlの機能)をネーティブ実装 (PHPライセンス)
DB I/FをPHPから管理可能: メモリ管理、キャッシュ等
使用メモリ低減(40%)、高速化
PHP5/PHP6をサポート: PHP6 ,PHP 5.3 に標準バンドル
mysqli (mysql)サポート。PDO_mysqlnd 開発中
mysqli, PDO
libmysql
MySQL
mysqlnd
変数コピー
変数コピー
変数コピー
mysqlnd.net_cmd_buffer_size = 2048
mysqlnd.net_read_buffer_size = 32768
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
mysqli_fetch_assoc("...");
設定パラメータ
mysqli_get_client_stats()
mysqli_get_connection_stats(mysqli $link)
関数
- 15. 循環コレクタ(Cycle collector)
従来はシンプルなガーベッジコレクタ(参照カウント)を実装
課題:直接・間接的な自己参照を検知できない
David Wang氏が「Google Summer of Code」で課題に
リファレンスカウンティング+サイクル検知
eZ Componentsを使ったベンチマーク(テンプレートなど)
メモリ消費量は1/2~1/22に(実行時間は若干増加)
PHP 6.0に採用予定。PHP 5.3にも採用
有効/無効: zend.enable_gc = On (php.ini)
gc_collect_cycles()により明示的に実行可能
- 16. ?:演算子
3項演算子の簡略版。
A ?: B A (A≠偽), B (A=偽)
ちなみに3項演算子(A ? B : C) B (A≠偽), C (A=偽)
$host = $_SERVER[‘REMOTE_HOST’] ?: $_SERVER[‘REMOTE_ADDR’];
- 17. ext/intl
Unicodeに基づく国際化処理
PECLにて公開、PHP 5.3.0にバンドル
6/27 intl 1.0.0リリース
書記素クラスタ (grapheme cluster) 単位の処理
substr, strlen, strposなど
ロケール(Locale)、比較(Collaor) 、正規化(Normalizer)
フォーマット
NumberFormatter, IntlDateFormatter, MeesageFormatter
- 21. PEAR:505, PECL:186, アカウント:2619
パッケージャ/インストーラ
package.xml 1.0, PEAR 1.3.6サポート打切(2008.1.1)
PEAR 2.0.0
リリース遅延中
PHP Archiver (phar)サポート
新インストーラ:Pyrus
PHP 5.2以降をサポート
PEAR/PECL Update
- 24. PHP 6.0のUnicode対応
PHPに文字列リテラルという概念が生まれる
Unicodeネーティブ対応:ICU 3.6をエンジンとして使用
多くの機能が影響を受ける
Unicode Preview Release Q4,2007年リリース?
Unicode対応と国際化
正規表現,エンコーディング変換
Unicode Collation:言語依存のソート/検索手法標準化
ロケール
Transliteration(音訳)
- 31. PHP Framework Update
月宮・安藤・久保・一井,他
PHPカンファレンス2008の見どころ
PHPの今とこれから 2007 廣川
10:00
11:00
12:30 昼休憩
13:30
パネル「ビジネス側面から語るPHP」
河江・加藤・一條・森
今日からはじめるPHPエクステンション 関山
15:00
16:00
クロージング/懇親会
マイクロソフトの次世代Webテクノロジー 徹底解説 -
Windows Server 2008 / IIS7.0 / FastCGIで変わるPHP
環境 奥主
大規模サイトの構築・運用ノウハウ
藤本・尾藤
PHP入門(仮題)
柏岡
PHP at Yahoo! Japan 荻原
ライトニングトーク
モバイル開発におけるPHPの利用方法やTips (荒木)
PHPを使ったPHPライセンスのSNSエンジン「MYNets」について(辻岡)
PEAR DB_DataObject開発ケーススタディ(熊倉)
PHPで画像処理をしてモテようかと思う(個々一番)
PHPプログラマのための恋愛術(海原)
codeなにがしの紹介(早川)
ケータイキット for Smartyについて (寺嶋)
PHPでログインシェルを作る(尾藤)
17:00
Zend Core による PHP 環境の改善 for Windows and
PowerGres 岡部
- 33. Namespace 名前空間(2006版)
<?php
namespace ns {
class class1 {
public $val = 1;
}
class class2 {
publicstatic$msg‘=hello’;
}
}
?>
<?php
import ns:class1;
import ns:class2 as ns_class2;
$obj = new ns:class1();
echo ns_class2::$msg;
?>