• 締切済み

PHPフレームワーク環境でのSmartyの必要性

PHP でシステムを開発する際ですが、恐らく何かしらのフレームワークを利用した場合は大半だと思います。そう言った時にテンプレートエンジンの Smarty を合わせて利用するかどうか意見が別れる時があります。 PHP でフレームワークが今ほど使われていなかった大昔は、素の PHP 実装 + Smarty で、ロジックとテンプレートを分離する流れがありました。 しかし、現在利用されるほとんどのフレームワークでは当たり前のように MVC の思想で構成されており、ロジックとテンプレートは初めから分離されています。 そう言った状況の中、Smarty を各フレームワークと連携してテンプレートエンジンとして利用する必要がどれほどあるのか、判断に苦しみます。 皆さんはどう考えるでしょうか?

  • PHP
  • 回答数4
  • ありがとう数10

みんなの回答

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.4

そもそも、CakeやZend Framework、Fuelなどほとんどのフレームワークが、設計コンセプトにおいて、Smartyの存在を無視している以上、あえて過去の遺物を引きずる必要はないです。 Smartyはテンプレートエンジンですらない、単なるタグパーサであり、モダン・フレームワークのアーキテクチャに合いません。 最新のMVCであるLaravelなどは、自前でBladeというテンプレートエンジンを装備していますし、WordpressのようなCNSでもSmartyは用なしです。 Smartyを採用したがるのは、開発をレガシーphpの手法に引き戻して、何とか仕事を自分たちの手の届く範囲に止めたい、オールドデベロッパーの悪アガキに思えます。

takah75
質問者

お礼

ストレートなご意見ありがとうございます。 共感部分が多いです。 こちらの開発リソースが特別なのか、Smarty有りきの方が割と多いんです。 (昔からPHP + Smartyで開発してきているからなのか) よく言われるのが、Smartyでないとコードが汚い。 Smartyには便利機能が豊富でテンプレート処理が簡単。 個人的は、Smartyを定義してSmartyに情報を設定するコード自体が、フレームワーク標準ではなくSmartyの拡張コードという認識なので汚い?というか不要なコードに感じてます。 シンプルでなくなっている認識です。 本当にメリットがあるのか、その場では理解した風でいますが、本当はイマイチ腹に落ちてきていない感じです。

  • hue2011
  • ベストアンサー率38% (2800/7250)
回答No.3

cakeだと、viewはE-R図を描いた上bakeで生成されてしまいますので、それを使わないと連携が危うくなります。 modelとの密接な連携も、フレームワークが囲い込んでいますし。 ただし、全くmodelと無関係なオブジェクトを使用するというのであれば、smartyは名前の通りスマートにできます。 Zendは書き方・書式がうるさい系統ですから、smartyを使うと、コードチェックに引っかかる可能性があります。 設計者の頭の中で、ここからはsmartyの領域だと区分けがきっちりできれば原則問題はないかと思います。 が、そんなに頭脳はクリアではないのです。 cakeが1から2になったときの混乱は今もひきずっていますが、smartyと一緒に使った場合、次に3ができて移行しようとしたときかなり混乱するようには思います。

takah75
質問者

お礼

ご意見ありがとうございます。 設計はシンプルな方が絶対いいですね。 後から参加した方に頭を悩ませたくないですし、メインでも無いところで考えるのが勿体無いです。 ベース部分(プロジェクトの骨組み)は限りなくシンプルが理想です。

回答No.2

MVCになっていても搭載されているViewの機能が貧弱の場合があります。 その場合、Smartyを使った方が楽な場合があります。 (SmartyはViewに機能を絞って開発されている分、Viewとしての機能は高機能なので)

takah75
質問者

お礼

ご意見ありがとうございます。 確かに、Smartyにある機能が各フレームワークのテンプレート機能にないというのは、話している方がいました。 簡単な処理だったので、それならビューヘルパーか何かで自前で用意することもできるはずなんですけどね。 どう説明するか、難しいときもあります。。

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

Zend FrameworkとかCakePHPといった MVCフレームワークを使うのであれば、 Smartyの必要性はあまりないような気がします。 素人の浅はかな考えですが…。

takah75
質問者

お礼

ご意見ありがとうございます。 基本、私も同様の考えです。

関連するQ&A

  • PHPのフレームワーク選定

    PHPで何かしらのフレームワークを使おうと思っていますが、経験がないので各フレームワークの特徴が分からず、何を選んでいいか分かりません。 とりあえずテンプレートエンジンの機能だけでもよかったので、シンプルで使いやすそうなSmartyを使ってみました。Smartyは簡単な設定のみで利用できたものの、すべてのソース(テンプレート以外のプログラムファイル)に # $smarty->template_dir = '…'; # $smarty->config_dir = '…'; などと、テンプレートファイルや設定ファイルのディレクトリを書かねばならず、環境依存の記述をプログラムファイルに書きまくる事を前提としていて、これはありえないなと思いもう少しきちんとしたつくりのフレームワークを使おうと思いました。 ※最悪の場合、<?php include './common.php'; ?>などと書こうかと思ったのですが、それでもプログラムファイルに環境依存の値を書くことには変わらないので、そうしなくともよいものを利用したいと思っています。 条件としては ・テンプレートが利用できる【必須】  (サイトの共通デザイン部分と変化する部分の分離をしたい) ・Windows環境で開発しレンタルサーバにアップする関係もあり  環境依存の記述は最小限にしたい。少なくともプログラムファイルに  書かずに済むようにしたい。【必須とは言わないが強い希望】 ・設定が簡単なほどいい ・多くのレンタルサーバで使えるものがいい ・「http://…/home.php」などとPHPのファイル名丸出しのURLではなく、  「http://…/home」とできるなど、ファイル名とURLを分離できるとうれしい ・DBは「今のところ」使わないが将来的には使うかも という感じです。 上記条件に合致するお勧めのPHPフレームワークを教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • テンプレートエンジンとフレームワークどちらを先に学ぶべき?

    具体的には、 テンプレートエンジン ⇒ Smarty フレームワーク ⇒ cakePHP を使えるようになりたいのですが、 どちらを先に学ぶべきでしょうか。 PHP自体、現在勉強中なのですが、 一通りわかってきたので、次のステップに移ろうと思い迷っております。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPのフレームワークとはどれがいいのでしょうか

    私は、PHPを使ってWEBのシステム構築に携わっております。 いままではフォームの組み込み等の簡単なものだったため、 PHPを記述して対応しておりましたが、大きいシステムのお話などが 出てきだしており、システムの作成をもっと効率化できないかなど 自分のステップアップを考えております。 ある程度の規模に対応でき、システム開発が柔軟に行えるようなPHP フレームワークはございますでしょうか。 Cake PHPやFuelPHP等が出てきますが、多数の種類があるため、 利用者様や学習者様のお声をお聞きしたく、質問をさせていただきました。 DBを利用することも多々ありますので、DBとの連携も容易なものがありがたいです。

    • ベストアンサー
    • PHP
  • PHP初心者はSmartyやPEARを使うべきですか?

     PHPのサンプルなどが載っている書籍で勉強をしていると、Smartyで効率を上げるとか、PEARのクラスを利用して実装の時間を減らすということが書かれていて、実際のサンプルプログラムもそれらの技術を使って作られていることが多いです。  しかし、PHPをまだ習熟できていない私は、それらの技術が出てくる所為でプログラムを理解することに苦しむことがあります。エラーがあっても、その原因を特定するのに時間がかかってしまったり、PEARのマニュアルを読むだけでも一苦労だったりします。  そこで皆さんの意見をお聞きしたいのですが、PEARやSmartyは是非とも使いたいものなのでしょうか?私はこういう所が気に入っているから使っているとか、ここがダメだから使っていないなどありましたら教えてください。  また、初心者だからこそPEARやSmartyを使ったほうが良いのでしょうか?

    • ベストアンサー
    • PHP
  • phpフレームワークの選択

    プログラムのことはわからない素人です。会員制サイトの作成を開発者に依頼する場合、phpフレームワークを利用する、べた書きなどいろんな方法があるようなのですが、速さ、セキュリティ、安定性に加え、そこそこ大きな規模になることを希望している場合は以下のどれがよいのか迷っています。 Cakephp, Yii などのオープンソースフレームワーク Corephp と oop、mvc などによる開発者独自のフレームワーク Corephp のみ 1、 オープンソースは、開発者独自のフレームワークより、公開されている分セキュリティー面が不安な場合もあるのでしょうか。 2、開発者独自のフレームワークの場合、素人にとってはどのくらいスキルがあるのか判断できない点が不安なのですが、開発者にどのようなことを確認すればよいでしょうか。 3、世界的に有名なサイトなどは、やはりオープンソースフレームワークなどではなく、サイトにあわせた独自のフレームワークを利用していることがほとんどなのでしょうか。 その他にもアドバイスなどありましたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPとSmartyで、ブログサービス的なシステムを構築しております。

    PHPとSmartyで、ブログサービス的なシステムを構築しております。 管理画面より書き込んだ内容をデータベースへinsertし、目的に応じてselectで反映するといったものです。 この先、管理画面よりサイト(ブログサイト的な)のデザインを予め用意しておき、数種類の中から1つテンプレートを選択し、決定をすると自動的に該当のテンプレートに切り替わるコンテンツを構築しようと考えておりますが、イマイチ良い案が思いつきません。 流れの順序としてはこの様になります。 --------------------------------------------------------------------------------- 1、管理画面へログインをする。(実装済) 2、タイトルや内容等、各項目へ入力後「書き込む」ボタンをクリックしてデータベースへinsertしてselectで表示。(実装済) 3、各項目の修正と削除。(実装済) 4、複数のテンプレートの中から気に入ったテンプレートを選択して、デザインの変更を行う。←ココで悩んでいます。。。 --------------------------------------------------------------------------------- 例えばカテゴリ分け等をした時に、「aaa.php」にアクセスした場合は、「aaa.tpl」を呼び出す。「bbb.php」にアクセスした場合は、「bbb.tpl」を呼び出すといった見せ方は実装できますが、 どのデザインに変更してもファイル名は変更しない様に実装できないものでしょうか? また、「 index.php?design=design_1 」といった動的URLも避けなければいけないという条件です。 $smarty->displayをどうにかして条件分岐で実装出来ないかと考えましたが、参考になりそうな資料を見つけることが出来なかったので、非常に悩んでいます。 色々と制約があり恐縮ではございますが、何卒ご教授の程よろしくお願いいたします。 最後に念のため、データベース等のスペックをお伝えしておきます。 --------------------------------------------------------------------------------- サーバOS:Linux 2.6.x WEBサーバ:Apache_1.3.37 PHP:5.3.3 データベース:MySQL 5.0.77 ---------------------------------------------------------------------------------

    • ベストアンサー
    • PHP
  • Smartyの検索エンジンとの相性は?

    検索エンジン対策として、色々な手段があると思いますが、 静的なhtmlファイルに、titleやh1タグで重要な語句を強調するのが効果的だと思っています。 PHPを使う場合、 1、htmlファイルにphpを記載 2、phpファイルにhtmlを記載 3、phpファイルにsmartyでデザイン の大きく3種類あると思いますが、 3、のsmartyを使ってみようと思っているのですが、検索エンジンとの相性はどうなのか心配です。 感覚的なのですが、テンプレートに飛ばしたら若干影響はあるのかなあ、と考えました。 検索エンジンについては、「こうだ」という正解はエンジン製作元にしか分からないと思いますが、これについての一般論などで結構なので、何か情報をいただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • .NET Frameworkでサーバ側の処理

    最近、マイクロソフトの.NET Frameworkを利用した、 リッチクライアントの実現(スマートクライアント) についてよく耳にするのですが、いまいちイメージがつかめないので質問させていただきます。 サーバ側にはビジネスロジックのみを実装し、 クライアント側ではユーザーインターフェイスのロジックのみを実装させることで、更新処理を効率化できるとあるのですが、 ・サーバ側で実装するビジネスロジックは、.NETの言語の で記述できるのですか? ・またクライアントから、どのようにしてサーバー側の  ロジックを呼び出すのでしょうか? 全くの初心者質問であるのですが、 なにか情報をお持ちでしたら ぜひ教えていただければと思います。 よろしくお願い致します。

  • PHPフレームワークの習得期間

    一つのフレームワークを習得するのにかかる期間は、米国の専門家では、半年から1年程度と言われています。2週間で習得できるとか、1か月で習得できるとかいう強がりが日本で流行る理由ってなんでしょうかね?資格についても合格率を観れば数年かかるだろうなってわかるものが1か月で合格できるとか、夢物語が書かれるケースがありますよね。  自己への過大評価による工数見誤りってダサいですよね。 私はある程度組めるようになるまでに、Symfonyで1年、CAKEで8か月、Zendで9か月かかりました。現在はそれぞれ少なくとも1年以上は経験しています。それでもマスターしたとは到底言えません。 しかも、フレームワークを使えば使うほど思うのは、フレームワークは宣伝ばかり鵜呑みにする人の恰好の餌食だなと。メリットがあってもそれを生かすことが難しいこと、デメリットが致命的に大きいことでしょうか。  特に、情報戦略、経営戦略といった戦略面全般では、標準的なPHPに完全に劣っています。 にもかかわらず、いまだにフレームワーク信者が多いのは一体なぜなのでしょうか?  まず、技術家は、全体戦略に疎いです、それは企画や分析、そして経営などの分野です。 視野が狭く、より優れているかのように見えるスキルをスマートであるとか格好いいとか 戦略面とは別の部分で飛びつくのです。そして、そこで利点を得ると、勝手に正当化する理由にするのです。宣伝は戦略です。利点ばかり惑わされてはいけません。フレームワークを使わないことの欠点を考えろと言う人もいるかもしれませんが、設計面でもそれを補うことはできると思います。なぜならば、フレームワークで実装できる機能はそもそも、標準的なPHPのライブラリを真似て作っているからです。  全体戦略は数学に基づいています。この部分へと視野が向かないことが致命的敗因です。 フレームワークは廃れる技術です。スタンダードではありませんから。本質はあえて書きませんが、それを気づくのは学習し続けたエンジニアにしかわかりません。  フレームワークは連携力を促す云々という文句がありますが、連携力はむしろ低くなっているでしょう。その理由もあえて書きませんが明白です。

    • 締切済み
    • PHP
  • さくらレンタルサーバ上のSmartyの利用

    Smartyを入れてサイトを構築しています。 普通にテンプレートとして使えますが、 なぜか、{section} などはうまく動きません。 Smartyは慣れているのでコードの可能性が低いですが。。 さくらレンタルサーバ上ではSmartyを利用するには何か特別な設定が必要でしょうか? ちなみに、 ■ロジックPHP -------------------------------- //print_r($array)の結果は以下とおりのを確認できた //Array ( [0] => Array ( [name] => name1 [add] => add1 [url] => url1 )      [1] => Array ( [name] => name2 [add] => add2 [url] => url2 ) ) //これをテンプレートで、sectionで回したいです。 $smarty->assign("array", $array); ------------------------------- ■テンプレート --------------------------------- testing<br> {section name=i loop=$array} {$array[i].name}<br> {$array[i].add}<br> {/section} testing finished<br> --------------------------------- 全く何も表示されず、エラーもありません。 デバッグの「testing」の間に結果が入るはずですが、真白です。 どなたか教えてください かなり数時間はまっていました。。。 よろしくおねがいします。

    • ベストアンサー
    • PHP

専門家に質問してみよう