忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/22 06:22 |
Symfony-1日目

チュートリアルに従って学習を進めていきます。
いつものように文体が教える形式になっていますが、単にその方が書きやすいというだけで、基本的に自分が学習するために書いてます。
あまり気にしないが吉。


とりあえず真っ先にSymfonyの問題点を挙げておくと、APIの日本語リファレンスが無い。

習得にあたり、SmartyZFがほぼ完全なリファレンスを提供しており、CakePHPも不完全ながら主要コンポーネント等については一覧を用意しているのに対し、大きなハンデとなっています。

あるのはチュートリアルのようなものばかりです。
http://symfony.xrea.jp/
http://www.symfony-project.org/jobeet/1_2/Doctrine/ja/
英語版は存在しますが、"form_tag"で検索しても何も出てこないなど、何処に何があるのか先に知っておかないと使えないという全く意味のないリファレンスになっています。

単にフォームを表示したいだけなのにオブジェクトがどうとかメソッドがどうとかいった内容をデザイナーに押しつけるという馬鹿げた発想が無くならない限り、積極的に使いたいとは到底思えないんですが。

確かにエスケープやフォームの肩代わりをしてくれるのは楽といえば楽なのですが、そのぶん参入障壁も非常に高くなっているので、入口を整備しないとなかなか入り込めないのですが。
あとフォームやDBの内容を取得すると無駄に馬鹿でかいオブジェクトが入ってくるので、var_dump()等目視によるチェックが行いにくいというのも難点です。

なにやらいきなり文句ばかりになりました。
最終日までに解消されればいいのですが。


インストールそのものは簡単です。
チュートリアルではダウンロードして解凍してといったことが書かれていますが、Pearを利用した方が楽です。

コマンドラインから
> pear channel-discover pear.symfony-project.com
> pear remote-list -c symfony
> pear install symfony/symfony

とするとPEARパッケージとしてインストールされます。
今回はバージョン1.2.9。

次にプロジェクトを作成します。
ディレクトリ構成なんかを簡単に作ってくれるバッチファイルがあります。
プロジェクトを作成したいフォルダに移動し、コマンドを一行打つと完了です。
勿論先にphpとsymfonyにパスを通しておきます。

> cd C:\xampp\htdocs\symfony
> symfony init-project jobeet
> symfony init-app frontend


サブドメインを作成します。
httpd.confを編集。

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs\symfony\web"
    DirectoryIndex index.php
    ServerName symfony.localhost
    <Directory "C:\xampp\htdocs\symfony\web">
      AllowOverride All
      Allow from All
    </Directory>
</VirtualHost>


hostsに
127.0.0.1 symfony.localhost

以上を追加することで、
http://symfony.localhost/
でC:\xampp\htdocs\symfony\webがDocumentRootになります。

まあ、元々
http://localhost/
でC:\xampp\htdocsにアクセスできるようにしているのでこのディレクトリ構成だとセキュリティ的には全く意味がありませんが。
根本からディレクトリを分け、プロジェクト作成後に現れるwebディレクトリだけが外部公開され、それ以外のすべては外部から見えないところに隠される、という状態にすべきです。


以上でjobeetプロジェクトと、frontendアプリケーションが作成されました。
同時に開発環境も作成されます。
http://symfony.localhost/index.php
http://symfony.localhost/frontend_dev.php
というURLでそれぞれアクセスできます。
データベース等を開発環境用と本番用で分けたりするといったことができる他に、開発環境では実行したSQLや発生した例外の内容などを見ることができるようになっています。

とりあえずアクセスすると、CSSも画像も認識されず状態になっていました。
開発環境で使用する画像は何故か全然別のフォルダに入っています。
私の場合
C:\php5\pear\data\symfony\web\sf
とかいうところにありました。なんで。
sfディレクトリをwebディレクトリ内にコピペするか、シンボリックリンクで参照できるようすると、インデックスにアクセスできるようになります。
チュートリアルではhttpd.confを設定しろみたいな話になっているのですが、DocumentRootやAllowOverride等は仕方ないとして、たかがWebアプリケーションのためにわざわざhttpd.confでエイリアス設定させる思想ってどうなんですかね?


さて、上記の記事を書いたときには公式のコマンドはinit-projectだったはずなのですが、今見たらいつのまにかgenerate:projectに変わってました。
何故。

どちらを使用しても結果は同じになります。たぶん。
 

Symfonyの記事一覧

PR


2009/11/09 19:17 | Comments(2) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

symfonyのバージョンによってform周りの使い方やコマンドが変わっています。

form_tagが検索して無いとかgenerate:projectになっているとかもバージョンの違いじゃないですかね。

なので、各バージョンごとにドキュメントが用意されていて、それぞれ微妙に異なるので注意が必要です。(ググってでてきたブログなどの記事も同様)

バージョンの違いがごっちゃになってそうだったのでコメントしておきました。

あと、webアプリケーションとかでエイリアス使うのって全然普通じゃないですかね??
posted by brtRiver at 2009/11/09 20:43 [ コメントを修正する ]
コメントありがとうございます。

>バージョンの違いがごっちゃになってそう
それはあると思います。
最初のインストールの頃とか何がどうなっているのかさっぱりわからずにやっていたので、変なマニュアルとかよくわからない解説サイトとかを見ていたかもしれません。
ていうか、未だによくわかりません。
$formって一体何処からやってくるの?とかsfRequestRouteってそもそも何?とかそんなレベルです。


>form_tagが検索して無い
のはリファレンスのせいです。
バージョン1.2のリファレンスですが、
http://www.symfony-project.org/api/1_2/

form_tagで検索しても「There is no API documentation for "form_tag". 」となります。
http://www.symfony-project.org/api/search/1_2?search=form_tag

実際にはform_tagはFormHelperの中に存在します。
http://www.symfony-project.org/api/1_2/FormHelper

FormHelper::form_tagとパッケージ名からフルで検索すると見つかりますが、そんなの素人にはわかんねーよ、ということで。


>あと、webアプリケーションとかでエイリアス使うのって全然普通じゃないですかね??
まじですか。
実はCakeとZFくらいしか触ったこと無いのですが、どちらもDocumentRoot以外は.htaccessだけで十分だったのでそんなものだろうと思ってました。
lnだけで済むことなのに、いちいちhttpd.conf編集して再起動して、とかどうなの、と思ったのですが。

#アクセス権とかセキュリティはあんまり考えてない
posted by NurseAngel at 2009/11/10 22:22 [ コメントを修正する ]

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ゲームレビュー:CLANNAD | HOME | 買ったものリスト 2009/11/08>>
忍者ブログ[PR]