by shigemk2

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

第2回関西PHP勉強会(2011年11月24日) PHP5.4おいしさつまみぐい

Firebug FireCookie
Pinoco

  • PHP5.4をすぐに使ってみる
  • Array Short Syntax
  • Built-n Server
  • Trait
  • Closure
  • その他

5.4の機能を知りたいときはGrahamさんの作ったスライドを見るべし。

PHP5.4をすぐに使ってみる
PHP5.4 RC1(2011/11/11)
(リリース候補登場)

必要なもの
Windows
バイナリあるからビルドはしないほがよい
Mac
XCode + MacPorts or HomeBrew
Linux
特になにも

あとでスライドはダウンロードが出来るので
ぼちぼちやってください。

できあがり
make installしなくても
sapi/cli/phpを使ってだいぶ遊べる

うまくいかない人はconfigureオプションを
減らしていくといい。 無指定だと拡張機能がなくても
だいぶ動くPHPになる。

バージョン確認

% sapi/cli/php -v

シェルで遊ぶ

% sapi/cli/php -a
Interactive Shell
php >

クロージャをつかってもよい
2進数リテラルを使って遊べばいい

Array Sort Syntaxl
arrayが必要ではなくなる。

array(1,2);
[1,2];

array('a' => 1, 'b'=> 2);
['a' => 1, 'b' => 2];

@rsky 氏が作成

var $belongsTo = [
  'User';
];

まとまりが良くなる。

  • 右手だけのキーストロークになる
  • 関数の引数の括弧とは違うように見える
  • PHP以外の人にもわかってもらえる
  • Arrayで動作オプションを渡す関数がもっと使いやすくなる

Built-in Server
コマンドラインのPHP
ローカルテスト用のサーバになる

% php54 -S localhost:8080

コマンド一発で立ち上がる。

どこがおいしいのか

  • file://では期待通り動かないAPIがあり、フロントの人がPHP5.4でダミーサーバを書ける
  • 手元のApacheにいちいちバーチャルホストを立てるのが面倒な

くらいのスポット仕事になる

  • インストールの残骸がシステムに残らない

MacPortsMySQLとの相性が問題で実行時にphp.iniで指定しないと
いけないときもある。

ビルトインサーバ用のスクリプトが書ければ、
URLをリライトするフレームワークでもおk

Apacheの設定なしでもブラウザで動かして試せる。

手持ちの開発環境がPHP5.3以下でも、ビルトインサーバを意識した
プロジェクトなら、mod_phpを書き換えずにPHP5.4を試せる。

TRAIT

  • 親クラス以外からもメソッド実装を持ってこれる
  • Rubyでいうとmixinに相当する
  • ただしPHPのトレイトは、型階層(instanceofの結果)には影響しない
  • 型の追加はインターフェイスに任せる。実装の追加はトレイトに任せる

コード分割その1
include/require

外部ファイルに関数やクラスを分けて書ける
HTMLを分けて下記、
外部ファイルで処理

ただし、クラスの外でしか書けない。

その2
継承

基本クラスをもとにして、足らない部分を実装する。
実用性を意識すると、OOPの「〜は〜の一種」モデルが
実際のありっさまには準拠しなくなり、システム主導となってしまう.

  • .incファイルを作成する。

requireの書ける場所は「クラスの外」だけ。

traitでクラス内でも書けるようになった。

call_user_funcしなくてもメソッドをarrayで呼べる。

stringもarrayも見た目はクロージャそっくり。

is_callableでありさえすれば同じように扱える。
クロージャがなければ関数名やArrayでも代替可能

$this in closure
PHP5.3だと…
クロージャの中に$thisを使うとエラーになるらしい。
(回避策として一旦別変数で$thisを格納する。

5.4だと
クロージャの中でも$thisが使えるようになる。

もっとJavaScriptみたいなことが出来る

クロージャの$this掏り替えも可能

クロージャはもうcreate_functionの代わりではない
Javascriptのようにthisが文脈によって変化しうる。

クロージャの$thisはそのときどきで違ったりできる。

やりたいことの本質に全く同じコードで書けるのが嬉しい。

5.3では名前空間が使える。

  • Phar(圧縮したライブラリが使える)
  • PHP5.4の新機能は、便利なところからちょっとずつ使えばいいものばかり。

コマンドラインとビルトインサーバでつまみ食いをしてくれ。