SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
恒例となりましたPinocoのお時間
まじめに紹介してみる
たなかひさてる
@tanakahisateru
Pinoco developer
PHPTAL contributor
Firebug translation contributor
Yii framework user
テンプレートエンジン
何使ってますか
デザイナーが書いたHTML
<ul>
<li>
<a href="#">menu1</a>
</li>
<li>
<a href="#">menu2</a>
</li>
<li>
<a href="#">menu3</a>
</li>
</ul>
PHPerが触るとこうなっちゃう
<ul>
<?php foreach ($menuItems as $item): ?>
<li>
<a href="<?= $item['link'] ?>"
><?= htmlspecialchars($item['label']) ?></a>
</li>
<?php /*
<li>
<a href="#">menu2</a>
</li>
<li>
<a href="#">menu3</a>
</li>
*/ ?>
<?php endforeach; ?>
</ul>
インデント変わってね?
<ul>
<?php foreach ($menuItems as $item): ?>
<li>
<a href="<?= $item['link'] ?>"
><?= htmlspecialchars($item['label']) ?></a>
</li>
<?php /*
<li>
<a href="#">menu2</a>
</li>
<li>
<a href="#">menu3</a>
</li>
*/ ?>
<?php endforeach; ?>
</ul>
でもこれ読みにくい
<ul>
<?php foreach ($menuItems as $item): ?>
<li>
<a href="<?= $item['link'] ?>"
><?= htmlspecialchars($item['label']) ?></a>
</li>
<?php /*
<li>
<a href="#">menu2</a>
</li>
<li>
<a href="#">menu3</a>
</li>
*/ ?>
<?php endforeach; ?>
</ul>
問題点
HTMLのインデント方針→DOM構造
テンプレートエンジン→分岐と繰り返し
意味構造の違う言語が混ざっている
SmartyやTwigでもこれは同じ
TAL = Template Attribute
Language (Python文化)
TALの文法で書くと
<ul>
<li tal:repeat="item menuItems">
<a href="#"
tal:attributes="href item/link"
tal:content="item/label"
>menu1</a>
</li>
<li tal:replace="">
<a href="#">menu2</a>
</li>
<li tal:replace="">
<a href="#">menu3</a>
</li>
</ul>
HTML - TAL
<ul>
<li tal:repeat="item menuItems">
<a href="#"
tal:attributes="href item/link"
tal:content="item/label"
>menu1</a>
</li>
<li tal:replace="">
<a href="#">menu2</a>
</li>
<li tal:replace="">
<a href="#">menu3</a>
</li>
</ul>
最初の<a>でちょっとズルしてるけど許して
<ul>
<li>
<a href="#"
>menu1</a>
</li>
<li>
<a href="#">menu2</a>
</li>
<li>
<a href="#">menu3</a>
</li>
</ul>
TAL
TALはXHTMLの名前空間で実現される
つまりHTMLと構文システムを共有
HTMLバリデータを通る
ということは...
単体でブラウザに出せる
TAL導入の動機
ブラウザ側技術の高度化
ユーザビリティ最優先でデザインされたUIへのニーズ
フロントエンド側のコードにも品質が求められる
http://phptal.org/
なぜか保守メンバーになりました。
よろしくお願いします。
これ、すぐに使いたい人は
Pinoco
もっとも静的サイトに近いフレームワーク
http://tanakahisateru.github.io/pinoco/
$ cd _app
$ ./server
PHP 5.4.13 Development Server started at Thu May 30 18:08:04 2013
Listening on http://localhost:8801
Document root is /Users/tanakahisateru/Sites/pinoco-test
Press Ctrl-C to quit.
「すぐに」は本当にすぐに
ビルトインサーバ対応
最近のPinoco
PhpStormのOSライセンスもらってコード品質超改善。
難しいプログラミングの開発案件でも、
中のライブラリを取り出して使うと大活躍。
0.8をリリース → ベータ期間終了予定。
APIドキュメントをオンラインに。
そろそろワークショップをやりたいと思っています。
とか面白くないので
最新機能
静的サイト構造を維持した
ビューとロジックの分離はそのままに
ロジック
HTML
(+TALの属性)
ナウいルーターを挿入可能にました
$router = $this->route();
$router->pass(array( // 無視するパス(後続のスクリプトに委譲される)
'',
'index.html',
))
->on('list', function() {
// 一覧表を出力
})
->on('show/{id}', function($id) {
// IDで取得して詳細を出力
})
->on('POST:upload', function() {
// POSTでデータ更新
})
->on('GET:upload', array($this, 'forbidden')) // 403
->on('*', array($this, 'notfound')); // 404
やりやすくなったこと:
ビューを持たないアクションとか
JSON返すRESTなAPIとか
プレーンPHPからの移行を
お待ちしております。

Weitere ähnliche Inhalte

Mehr von Hisateru Tanaka

HTMLに学ぶ夫婦円満のコツ
HTMLに学ぶ夫婦円満のコツHTMLに学ぶ夫婦円満のコツ
HTMLに学ぶ夫婦円満のコツHisateru Tanaka
 
とある事業の脱レガシー
とある事業の脱レガシーとある事業の脱レガシー
とある事業の脱レガシーHisateru Tanaka
 
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiYii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiHisateru Tanaka
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansaiHisateru Tanaka
 
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活Hisateru Tanaka
 
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワークPHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワークHisateru Tanaka
 
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaGrunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaHisateru Tanaka
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話Hisateru Tanaka
 
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身Hisateru Tanaka
 
はじめてのGit #gitkyoto
はじめてのGit #gitkyotoはじめてのGit #gitkyoto
はじめてのGit #gitkyotoHisateru Tanaka
 
いまどきのYiiフレームワーク
いまどきのYiiフレームワークいまどきのYiiフレームワーク
いまどきのYiiフレームワークHisateru Tanaka
 
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐいHisateru Tanaka
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかHisateru Tanaka
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話Hisateru Tanaka
 
Pinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiPinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiHisateru Tanaka
 
Yiiフレームワークを使ってみた
Yiiフレームワークを使ってみたYiiフレームワークを使ってみた
Yiiフレームワークを使ってみたHisateru Tanaka
 

Mehr von Hisateru Tanaka (17)

HTMLに学ぶ夫婦円満のコツ
HTMLに学ぶ夫婦円満のコツHTMLに学ぶ夫婦円満のコツ
HTMLに学ぶ夫婦円満のコツ
 
とある事業の脱レガシー
とある事業の脱レガシーとある事業の脱レガシー
とある事業の脱レガシー
 
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansaiYii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
 
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
 
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワークPHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
PHPカンファレンス関西2014 Yii Framework 2.0 遅れてきた5番目のフレームワーク
 
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaGrunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanaka
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話
 
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
 
はじめてのGit #gitkyoto
はじめてのGit #gitkyotoはじめてのGit #gitkyoto
はじめてのGit #gitkyoto
 
いまどきのYiiフレームワーク
いまどきのYiiフレームワークいまどきのYiiフレームワーク
いまどきのYiiフレームワーク
 
Kphpug beginners-2
Kphpug beginners-2Kphpug beginners-2
Kphpug beginners-2
 
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのか
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
Pinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansaiPinoco phptal-phpcon-kansai
Pinoco phptal-phpcon-kansai
 
Yiiフレームワークを使ってみた
Yiiフレームワークを使ってみたYiiフレームワークを使ってみた
Yiiフレームワークを使ってみた
 

Phpcon kansani-2013-pinoco