by shigemk2

当面は技術的なことしか書かない

PHPの今とこれから 2012 #phpcon2012

ひろかわ

ポスト5.3時代のコード

新機能

  • モジュラーデザイン
  • 名前空間
  • オートローダー

統計上、PHP5.3を使っている人が一番多い

サーバーサイドのプログラミング言語PHPが一番使われている(7割がた)
そして9割がたPHP5を使っている

6割がた5.2

更新する理由

  • 新機能 性能が魅力的
  • セキュリティ バグ修正
  • サポート切れ

更新しない理由

  • 更新 確認の手間
  • 新機能 性能の魅力が小さい
  • 周辺環境の更新が追いつかない

「開発リソースの有効活用」とサポートの両立が課題

04/7 5.0(エンジン強化 OOPの大幅なサポート)
06/11 5.2 メモリ 速度改善 入力フィルタ
09/6 5.3 名前空間 クロージャ GC改善 遅延静的束縛 など
10/3 6.0 キャンセル
12/3 5.4 Traits 速度改善 MB対応標準化 組み込みwebサーバ レガシー機能削除

コミュニティもだんだん広がってきている。

今年は5.3.9から 9/13時点で 5.3.17が最新
CGIクエリパラメータ脆弱性 などが多い

2012/3 ソースコードの管理をsubversionからgitに移行
git.php.net githubにミラー。 PHPソースをクローンしてPRして誰でも変更を行うことが出来る

RFC作成 → 議論、更新 → 投票

フレームワークと相互運用性

相互運用性
モジュラーデザインが可能なフレームワーク(予め仕組みを決めないと不具合が発生するから難しい)

5.3時代のフレームワーク

PHP-FIG(PHP Framework Interoperability Group)
PSR(PHP Standards Recommendation)

PSR準拠にするには
PSR0-2準拠になるように修正など

依存性マネージャ
パッケージマネージャ(サーバ、システム単位からプロジェクト単位へ)
主要フレームワークに対応

  1. composer.jsonに依存性を記述
  2. パッケージのインストール
  3. オートローダとロックファイル自動生成
  4. 依存性を更新

Packagist::Composerによる配布 現在は3000くらい
Get Composed

PHP5.4改善/変更のポイント

  • 速度改善
  • Mix-inライクな機能を実現
  • 古い機能の削除
  • ZEマルチバイト標準化
  • 組み込みwebサーバー など

PHP5.4で高速化と省メモリ化を少しずつ実現

  • Trait: 単一継承の言語でコードを再利用する仕組み
  • 実装の再利用を行える
  • クラスや他のTraitのメソッド名衝突を解決する仕組みが必要

Zendエンジンマルチバイト対応標準化 バイナリ互換性改善
PHP <= 5.3
PHP 5.4

zend.multibyte = Onで有効に
zend.script_encodingでスクリプト文字コードを指定

正規表現置換eオプションはセキュリティホールとなりやすい
mb_ereg_replace_callback()関数追加で、置換文字列でコールバック関数を使用可能に

PCREにおけるpreg_replace_callback()に相当

5.5

  • リリース時期は未定
  • 5.3 5.4に比べて小幅な改訂となるかも
  • 目玉機能は今のところGenerator

Generator

  • イテレータを関数で定義(from Python)
  • ファイルの各行を処理、ファイル全体読み込み→メモリが大量に必要
  • イテレータ定義は多くのコード記述が必要なので、配列全体を返すのではなく、値を生成するイテレータを返す

finallyキーワード

  • finallyブロック tryブロックから出る際に常に実行される
  • 例外処理の有無によらない → クリンナップコードを記述

パスワードハッシュ

  • パスワードハッシュ用API
  • crypt関数のラッパー パスワードハッシュをより簡単に発行できるようになった。

その他
配列文字列の添字参照

echo "123"[1]; // 2
echo [1,2,3][2]; // 3

foreachでリスト代入が可能に
preg_replaceのeオプションは非推奨になる

PHPの成功と未来

Rasumus語録

PHPは歯ブラシみたいなもの。いつも使う役にたつシンプルなツールだけど、
誰も歯ブラシのことなんて気にしないよね。
PHPは「問題を解くためのシンプルなツール」なのさ。

学習が用意、言語がシンプル ドキュメントが豊富

  • 地道な活動 勉強会など

進化を継続 webの進化に対応し、必要十分な解を提供

  • 開発者 貢献者の育成
  • キラーアプリ(wordpressなど)

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