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

昨日グリー株式会社であったモダンPHP勉強会でメモったことへのひとり突っ込み。 引用部分がそのときのメモ、その下が見返したときの感想です。 Twig by @cocoitiban 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 »

limeのis_deeplyが使いにくいので自前で書いてみた

limeのis_deeply。配列を比較できて便利だけど、いかんせん結果が見にくい。 と、いうわけで自前で書いてみた。 たとえばこんな配列を渡すと、 $a = array( 'hoge' => 'hogehog', 'huga' => 100, 'moga' => array( 'a' => 'aaa', 'b' => 'bbb', ), ); $b = array( 'hoge' => 'hogehoge', 'huga' => '100', 'moga' => array( 'a' => 'aaa', 'b' => 'bb', ), ); $diffs = is_deeply($a, $b); こんな結果が帰ってくる。 Array ( [[hoge]] => Array ( [0] => hogehog (string) [1] => hogehoge (string) ) [[huga]] => Array ( [0] => 100 »

ファイル名を再帰的に取得する関数

ディレクトリを再帰的に調べて、ファイルのパスを配列に突っ込んで返す関数。 シンボリックリンクなんかでループしたときの時の処理が必要かも。 »

Author image handlename on #PHP,