Symfonyのオートロード、ヘルパー、スタイルシートの読み込み
仕事で今使っているSymfonyなんですが、気軽に開発できて大好きなのですが、使い始めのころは、アクションとテンプレート辺りしか見えていなくて、「良いやり方があるんだろうなー」と思いながらも、工程に追われて力技で押し切っていました。
チュートリアルをきちんとやっていればそういうことも無かったのでしょうが、仕事なので、チュートリアルを悠然とやる余裕が無かったんですよね。まー言い訳なんですけどね。職業プログラマ的にはそういうことは多いのではないかとも思います。
で、最初の案件が落ち着いてから、きちんと調べてみたら、やはりイロイロ便利な機能が見つかりまして、少し損した気分を味わっておりますが、せっかくなので、ここに書き残しておきます。(あとでちゃんと整理する可能性ありますがとりあえず以下にまとめ書き)
lib/○○.class.php : クラスのオートロード
プロジェクトディレクトリやアプリケーションディレクトリ、モジュールディレクトリの直下にlibというフォルダを作ってPHPのクラスファイルを置いておくと、プログラム中でいきなりこのクラスを使用できます。
- プロジェクトの下 ―
/$(project)/lib/ - アプリケーションの下 ―
/$(project)/apps/$(app)/lib/ - モジュールの下 ―
$(project)/apps/$(app)/modules/$(module)/lib/
モジュールの中だけで使うクラスなら、モジュールの下にすればよいということですね。
余談ですけど、オートロードされるクラスの置き場所はSymfonyがキャッシュしています。ファイルの位置を移動した場合は、このキャッシュをクリアしなければ正しく動きません。Symfonyのキャッシュをクリアするにはプロジェクトディレクトリで php symfony cc[Enter] とやります)
lib/helper/○○Helper.php : ヘルパーの利用
Symfonyのヘルパーは複数のテンプレートから利用される関数をまとめたものです。
「○○」というヘルパーはlib/helperの下の○○Helper.phpというphpファイルに記述します。
利用するテンプレートの先頭で、<?php use_helper('○○') ?>とすれば、このテンプレートからヘルパーファイル内の関数を呼び出せるようになるわけです。
config/view.yml : テンプレートごとにCSSを読み込む
モジュール直下の config ディレクトリに view.yml を作成して、テンプレート毎に使用するスタイルシートを定義できます。
foobarSuccess: stylesheets: [foo/bar.css, hogehoge.css]
上の定義では foobarアクションのテンプレートfoobarSuccess.phpでは、/web/css/foo/bar.cssと/web/css/hogehoge.cssが読み込まれます。
検索パスは/web/cssなどで変更や追加も出来るようですが、基本的には/web/cssなどのようですね。
| 固定リンク



コメント