最もタメになる「初心者用言語」はPHP!

あえて言おう。最もダメに…じゃなかったタメになる初心者用言語はPHPである! と

なんとなれば、獅子は我が子を千尋の谷に突き落とす、と言うではないか。過酷な環境を生き延びたものだけが、真の初心者になれるのだ!

# ダメじゃん

p.s. 明日はAA-Camp#7開催しまーす。

PHP Speedyとかの問題点

PHP Sppedyという、入れただけでPHPスクリプトが高速化されるというライブラリがdel.icio.us/popularに出ていました。

PHP Speedyを読むことは勉強になると思うけど、すべてを解決できる魔法のソリューションがあったら、最初からPHPなりPHPアプリケーションに内蔵されてますって。

一番の問題点は、何か簡単なことをしたらいろんな問題がいっぺんに解決する、という話をたくさんの初心者が信じてしまうことなのかなあ。

Smartyやフレームワークを使っていれば、キャッシュや圧縮についてはまずそちらの同等機能を使うのが筋だと思います。それらを知らずにいきなりこういうのを投入するのは筋が悪い。知ってたらこの手のAll-in-oneツールは気持ち悪くて使えないはず。

# それとは別に、javascriptやcssや画像(CSS spritesとかで)やHTMLを書き換えまくるとこまでやったり、実行しながら自己測定して最適化手法を選択するようなWeb専用スクリプト言語、という進化もありかもとは思うけど

symfonyのフォームでYahoo UIの綺麗なボタンを使う

状況

  • フォームのボタンをブラウザのデフォルトじゃなく、もうちょっと良いデザインにしたい
  • Yahoo UIのボタンは、CSSでキレイにデザインされている。CSSや画像ファイルもyahoo.comのを使えるのでサーバにもやさしい
  • symfonyで作ったフォームからYUI buttonを使いたい

symfonyでのフォームのsubmitについては、link_to()、button_to()、submit_image_tag()の3つがFormHelperに用意されています。

  • submit_tag() は、ブラウザデフォルトのボタンを書くのでフォームでそのまま動く
  • button_to() type=”button”は作れるけど、formの値を送るには自分でjavascript書く必要あり
  • submit_image_tag() 画像用意すればキレイなsubmit用のボタンが使える

YUI buttonは、type=”button”を使うことを前提にしているのですが、type=”button”でformのサブミットをさせる(ボタンを押したらフォームの各値がリクエストに含まれる)ようにするためには、ボタンが所属するフォームを駆動するようなJavascriptが必要となります。

以上から、次のようにすることで、symfony+YUIでのCSSデザインボタンを作ることができました。

HTMLのほうは、2番目のパラメータにtypeを渡すことで、submit_tag()にもtype=”body”を上書きで指定することができます。

<?php echo submit_tag('実行する', array('type' => 'button', 'id' => 'compareButton')); ?>

YUI buttonのJavascriptでの定義のところでは、この「フォームを駆動するボタン」という設定ができるので、これを指定します。

<script type="text/javascript">
var oButton = new YAHOO.widget.Button(
  "compareButton",
  { 
    checked: false,
    type: "submit"
  }
);
</script>

type: “submit”がそれにあたります。

あとは、YUI buttonに必要な定義をします。

なんらかのスタイルをあてる。YUIで提供されているスキンか、自分で改造したスキンを指定することも可能

<body class="yui-skin-sam">

symfonyのconfig/view.ymlでは、関係のあるYUIのCSS/JSを読ませるようにします。

  stylesheets:    [main, http://yui.yahooapis.com/2.4.1/build/grids/grids-min.css, http://yui.yahooapis.com/2.4.1/build/button/assets/skins/sam/button.css]

  javascripts:    [http://yui.yahooapis.com/2.4.1/build/yahoo-dom-event/yahoo-dom-event.js, http://yui.yahooapis.com/2.4.1/build/element/element-beta-min.js, http://yui.yahooapis.com/2.4.1/build/button/button.js]

このへんは、YUIのバージョン変わったり、圧縮版を使うかとか、yahoo.comの提供してくれているファイルを使うか、ローカルにコピーしたファイルを使うかとかで変わってくるでしょう。

symfony, YUIで作ったキレイ目ボタン

PEARサイトがリニューアル

PHPの公式ライブラリサイトpear.php.netのデザインがリニューアルしたようです。

Yahoo UIライブラリを使ってすっきりとしたデザインになったり、パッケージリストなどの更新の自動化が入って細々とした不便な点も改善されているということ。(参考) いい感じです。

PEARサイトの新デザイン

symfonyで、view.ymlで定義したサイトタイトルをテンプレート中から呼び出す方法

view.ymlのdefault/metas/titleでサイトワイドのタイトルを定義しているのに、layout.phpや_header.phpでタイトルを手打ちするのは嫌だなあ、ということで、どこから辿ってview.ymlのデータが取れるのかを探しました。

layout.php等で、

sfContext::getInstance()->getResponse()->getTitle()

を呼ぶと、view.ymlの中のタイトルが取れます。これを<h1>とかに放り込めばOK。