読者です 読者をやめる 読者になる 読者になる

handlename's blog

コード片など

モダンPHP勉強会 #2 に行ってきた

昨日グリー株式会社であったモダンPHP勉強会でメモったことへのひとり突っ込み。
引用部分がそのときのメモ、その下が見返したときの感想です。

Twig by @

ZyngaではPHP5.3は1年ほど案件で使ってる
特にトラブルなし

[2010.12.19 9:10 追記]
Zyngaさんの社名をタイポしていたので修正しました。

以降は細かい変更点に対応するのが大変そうですが、新規案件なら問題なさそうですね。
今のところCentOSではじめから入っているPHPは5.1.6なので(たしか)、どうせ5.2にアップグレードするなら5.3にしてしまってもいいのかもしれません。
クロージャ使いたい。

Smaryが高速なのはキャッシュしてAPCに載っけてるから
最近のPHPはテンプレートエンジン使ってない
->テンプレートエンジンはモダンじゃない?
議論が一周してテンプレートエンジンが使う傾向に
便利で早くて綺麗でなくてはならない

プログラマーからすると素のPHPをテンプレートに使うのは何でもできてとても便利なんですが、逆に何でもできすぎて本来テンプレートに書くべきでない処理まで書いてしまうことがありますよね。
テンプレートエンジンを使えば強制的にViewとControlerが分離されるので、使った方がいいのかもです。

Twig by Fabien
テンプレートの継承をサポート
動的に継承元を切り替えられる
おととい(12月16日)0.9.10になった
相当活発に開発されてる
後方互換ののない変更もたくさん
Changelogおもしろいよ!

Changelogって、自分が使っているものがアップデートされたときにしか見てないです…。
確かに読んどくと制作者の意図が読み取れていいのかも。

今までのテンプレートエンジンはレイアウトとパーツの2階層
継承部分をフレームワーク側で制御していた
Twigは多段継承ができる
レイアウトのパターンをより細かく分けることができる

Viewの操作はViewで行うってことですね。
多段継承できると大きめのサイトをつくるときに便利そうです。

ダミーテンプレートで開発することができる
デザイナーと完全分業できる

これはいい!
デザイナーがちょこっとHTMLをいじってそれをサーバーに反映してまたちょっといじって…。なんて操作は時間の無駄きわまりないですからね。
デザイナー側で XAMPPとかで単純なPHPが動く環境を作ってテンプレートの動作環境だけ確保 → ダミーのテンプレートを動かしながらデザイン調整
という流れ…ですよね?

見た目はSmartyに似てる
Smargyはかっこが一つなのでJSとかぶる

JSとかぶるとどんな弊害があるんだろう…。エディタのシンタックスチェック…とか?

テンプレート内に変更する部分をブロックとして記述する
継承先ではブロックないだけを書き換える

Dreamweaverのテンプレートみたいな感じですね。

フィルタ
{{hoge|escape}}

タグ
{% block %}

どちらも自分で拡張できる

フィルタを拡張できると日付のフォーマットを一括変更したりできていいですね。

エスケープされるタイミングは出力直前
symfonyなんかはテンプレートに渡す前に問答無用でエスケープされる
エスケープするかどうかをテンプレート側で決められる
変数の型を見てテンプレートに渡す前にエスケープするかどうかを決めることもできる

最後のはフィルタの拡張に関する部分で、受け取った値から判断して好きに形式を変えられるみたいです。

キャッシュのソースが綺麗
クラスとしてキャッシュされる
インデントもちゃんとされてる
テンプレートの何行目かがコメントで書いてある

普通に読めるコードでした。
キャッシュをはき出す処理はどうなってるんだろ。symfony野はちょっと覗いたことあるんですが、読解は2分くらいであきらめました…。

Smarty3も結構いい
キャッシュは読めん
過去のものを移行するならSmartyでいいかも
新規ならTwigの方がいい感じ

「Smarty3いいっすよ」とのことでしたw

Twig自体のコードは結構モダン
くせがあるけどかっこいい

既存フレームワークのソースはちょっとでもいいから読むようにしないとなーと。

フレームワークBlankaの紹介 by @

「Twitterは無職を救う」

内定を蹴ってTwitterで「無職なう」ってつぶやいたらアシアルさんに拾われたそうですw

PHP5.3用
小さなものから大きなものまで
邪悪ではないパワフルさを目指す
githubで開発
Blanka-Twig-Doctrine2
インタラクティブシェルがある
Sinatraっぽく書けるけどSinatoraライクではない

目標はPHPフレームワーク戦争に勝利することだそうです。
Sinatraって使ったこと無いのでイメージがあまりわきませんでした…。
ちなみにBlankaは某格ゲーの緑のおっさんが由来みたいです。
iPadでメモってたんですが、この辺ですでに力尽きてます)

LIGHTNING TEMPLATE by @

ミニマムなフレームワーク
[https://gist.github.com/600388:title=Gistで開発]

ファイル一つからなるちっさいフレームワークらしいです。

LTのLTをしたいからつくったw

w

テンプレートはTwigっぽい
超軽量なので超早い
TwigでAPCを効かせると倍速くらいになる

使えるのは変数展開とエスケープ、条件分岐とループのみ!シンプルですね。

メソッドは全てマジックメソッド

ほんとに全部"__"から始まってましたw

PHPのString filterは便利

なにそれー
まだまだ知らない機能たくさんです。

[2010.12.18 23:00 追記]
String Filter じゃなくて Stream Filter とのことでした。コメントから指摘いただきました。sasezakiさんありがとうございます。

パーフェクトPHP発売&増刷記念トーク by @, @, @

技術評論社のパーフェクトシリーズの一つ

「あまりにもパーフェクトな本ができてしまったから自分たちで『パーフェクト』と付けたわけではない」とのこと。

言語を学ぶにはフレームワークノーソースを読むのが一番
PHPの、初心者向けな内容ではなく、難しい部分を説明したかった
フレームワークに頼りきりだとセキュリティの部分に疎くなる

簡単な部分だけ使ってたら技術者として成長しないってことですねー。ソース読もう。

最後に刷り上がったばかりという第2版が(じゃんけんに勝った)参加者にプレゼントされました。ほしかったー

懇親会

お酒とつまみとレッドブル

その中で聞いたはなしをメモしたつもりだけどほとんど無かった…。

SeleniumとPHPUnitは連携できる
hudson = PHPのantを自動で実行して結果を集積する
ストレージエンジンのspider

テスト大事。Seleniumは名前は知ってるけど使ったことないなー。

おわり

毎度のことですが自分がまだまだなにも知らないことを思い知らされる勉強会でした。勉強せねばー。