質問

私はCakePHPプログラマーです。 YIIフレームワークを試すことにしました。 CakephpがYiiに似ていて異なる方法を知りたいと思います。また、Yiiが主張するようにCakePhpよりも測定できるほど高速ですか?

役に立ちましたか?

解決 4

ケーキとYiiの間の違い

  1. ケーキにはコントローラーごとのモデルがあります。Yiiにはアクションごとに1つのモデルがあります。つまり、コントローラーはYiiの特定のモデルとは無関係です
  2. yiiでは、各アクションでビューとモデルを手動で指定する必要があります
  3. YII関連のレコードと関連するレコードは、手動で指定されていない限りフェッチされません
  4. YIIでは、それぞれデータを保存するかどうかに基づいて、モデルにはアクティブレコードモデルまたはフォームモデルが2つのタイプ(つまり、拡張)が可能です。
  5. CakePHPは慣習を実施しますが、YIIは柔軟性です。

他のヒント

個人的な経験から、両方のフレームワークにいくつかの違いがあります。特に、モデルの処理方法とYiiでモデルが処理されます。

  • CakePhpでは、複合プライマリキーを使用することはできません。これは私にとって主要な取引breakerです。 Yiiでは、複合プライマリキーがサポートされています。
  • cakephp 実施します 慣習、Yii 好意 慣習、あなたは特定の基準に従うことを余儀なくされていません。施行されたコンベンションは、優れたプログラミングプラクティスを構築するための良い方法ですが、最終的にはYIIが提供した柔軟性がこのラウンドに勝ちました。
  • 箱のないパフォーマンスには、Yiiには利点があると思いますが、パフォーマンスチューニングと同様に、適切なキャッシュ構成を備えており、ActivereCordパターンの使用に注意している限り、それほど離れていません。

サイドノートとして、私はCakePHPとYIIの両方でリードWebアプリの実装を持っています。チームから得たフィードバックは、経験の少ないチームがCakePHPを好むことですが、YIIはより経験豊富なチームに好まれています。それをあなたがすることを作ります。

古い投稿ですが、それにいくつかの経験を追加するだけです。

私はしばらくケーキを使っています。正確には3年。

現在、Yiiは間違いなくPHPでMVCテクノロジーをリードしているものです。これは、他のPHPフレームワークが現在比較できないフレームワークです。個人的には、「グリッド」に本当に感銘を受けました... PHPサイドは常に何らかの形でこれを欠いていると思っていました:)それは驚くほど速く、幅広い開発者に適しています。

CakePhpの場合:私は人々が主張し、おそらくしがみついているブログの数を読みました 「慣習」「厳格さ」 フレームワークの。

そうは言っても、私は同意し、同意しません。あなたがそれを理解すると、通常、ある種の主張はかなり明白に思えます。そのケーキのすべてのルール 引用引用 簡単にオーバーライドできます。最も重要なことは、人々が気付かないことです なぜ慣習が強制されるのですか?

あなたが多くの生産圧力を持っている開発者なら私は言います オートマジック 関連するモデルデータの取得、関連モデルデータの保存、に基づいて関係を定義するなど、舞台裏で走るケーキの 慣習 絶対に素晴らしいです。

これらの慣習に従うことから生じるきちんとしたものは、ここでは説明することはできませんが、経験しただけです。

また、フレームワークの速度で苦情を見てきたブログもたくさん読みました。私の経験では、あなたはそうすべきだと思います 本を読む。 人々は関係の数を定義し、デフォルトでケーキは関連するすべてのモデルデータを取得します。この動作をオーバーライドして、必要なデータを取得するだけです。実際、あなたのバインド、モデルをその場でバインドしてください。ケーキには、呼ばれる動作もあります 「封じ込める」 まさに目的のために。

ケーキに手を置くと、プロダクションと開発は本当に「迅速」になります。

また、CAKPHP 2以来ロットが変わりました。非常に高速で、さらにスケーラブルです。

すべてが言った、私はケーキが非常に貧弱な文書を持っていると本当に信じている。そして、より良いドキュメント、より現実的な例とリポジトリにより、それはより強い競争相手になります。

どちらのフレームワークも非常に似ていますが、私はYIIが好きです。なぜなら、高速で、モデル、100のヘルパー(jQueryウィジェット)で怠zyなロードを使用しているため、XML/YAML、多くの拡張機能、コンソール、GIIコードジェネレーター、魔法のない管理インターフェイス( +カスタマイズ可能、 +コントロール)、アクティブなフォーラム、完全かつbetiful的にOOPデザイン、さらにはシステム...など。

CakePHPも非常に優れたフレームワークです。トレーニングコースを計画していることが好きです。

私はそれらのすべてのバッシングCakephpと違うことを請います。両方のフレームワークのユーザーであるため、自分が何をしているのかを知っている場合、CakePHPは非常に柔軟です。つまり、人々に慣習を使用するよう要求しますが、同じドキュメントでこれを回避する方法を説明します。そしてこれまでのところ、本当のベンチマークは提供されていないので、皆さんに恥ずかしいことです...

私の経験では、私はYiiではなくケーキのパフォーマンスチューニングをしなければなりませんでした。そのため、まだ機能するべきか、どのように機能するかをまだ比較することはできないと思います。さらに、ほとんどのベンチマークでは、CakePhpやその他のフレームワークを箱から出しているため、CakePhpのパフォーマンスが低いと予想されます。

私は約2年間CakePHPと仕事をしており、Yiiで最初に完了しました。 (私はZendfで1年もやりましたが、それは嫌いでした)CakePhpはその厳格なシステムには良いことでしたが、その柔軟性には多くの制限がありました。 Yiiは実際に「Hack Me」と呼ぶ方法で完全に作られています。最良の機能は、すべてのコントローラーを継承するために使用される空のコントローラークラスで1日を開始することです。しかし、すぐに、レンダリングなど、特別なアプリケーションワイドスコープで標準のYII関数をジャンプしてオーバーライドすることができます。ケーキでは、アプリケーションコードで多くのハックを行うことはできません。最終的には、非常に非常に特別なケースのためにコアディレクトリに移動します(コアアップデートを実行する場合、非常に悪い考え)。

Yiiのプラグイン/拡張機能は、CakePHPに比べて簡単に作成できます。

CakePHPが私が知っているまで、モジュールをサポートしませんでした。私は自分でモジュールファンではありませんが、最終的にはアプリコードが成長すると、モジュールを他の人に外注することができます。

CakePhpコアは、交通渋滞の高いサイトで遅くなるのに十分なほど重いと思います。 Zendfははるかに悪いです。 Yiiには、アクションが呼び出されるまでに小さいコールスタックがあります。

cakephpt.phpはありませんが、yiit.php(単一ファイルのフレームワーク全体、生産のみ)がyiiのすべてを事前にコンパイルし、システムファイルのオープンコールで少数のミリセックを節約するためのすべてのものがあります。

YiiのURLルールセットとその逆アルゴは、PHPの他のすべてのフレームワークにとって無敵です。 IMO Yii URL設定は、CakePHPに比べて簡単すぎます。そして、CreateUrlを呼び出すと、同じ構成から正確なブラウザのURLを作成し始めます。これにより、アプリのURLが構成ファイルだけで変更されます。コントローラー/モジュールを別の(サブ)ドメインに移動することを選択した場合、構成の変更だけが必要です。アプリコードは不注意に保つことができます。

モデルの属性ラベル、ルール、それらを変更する方法も変更できます。すべてのモデルメソッドサポートGet/Post Properties -LifeSaver。その後、関係ルールは、CakePHPで能力があるものよりもはるかに優れています。いくつかのルールにおける検証と生のPHPコードでさえ、多くの柔軟性があります。

非常に柔軟なファイルパス慣習は、Yiiにも固有のものです。また、サブレイアウトにより、ビューの再利用性を作成することも非常に簡単になります。

私はCakePhpを学ぼうとしましたが、その構造は広範囲ですが、ドキュメントは貧弱です。たとえば、マニュアルのフォームヘルパーセクションでは、構文のみを説明せずにフォームオプションについて説明し、HTML出力を表示します。私のような初心者にとって、私は構文を知りたいだけでなく、収集されたフォームデータがどこに行くのか、どうすれば入力フィールドをピックアップできますか、フォーム入力をどこに向けることができますか。 「フォームのコンテキストを作成する」、このコンテキストは何ですか、これはどのように使用されていますか。

これは何を意味するのでしょうか,

「ユーザーがhasandbelongstomanyグループを想定している。コントローラーでは、Camelcaseの複数の変数(この場合はグループ - >グループ、またはextraFunkyModel-> extraFunkyModel)を選択したオプションで設定します。コントローラーアクションでは、次のものを置きます。」

私はCodeigniterを研究しましたが、それはその説明で非常に直感的でしたが、CakePhpのドキュメントは非常にうまく提示されていますが、物事を説明していませんが、参照マニュアルのように読みます。私は現在Yiiを見ていますが、Codeigniterよりも複雑ですが、ドキュメントはCakePhpよりもはるかに有益であるため、理解可能です。

YIIは初心者のMVCに適していますが、CakePhpは初心者にとっては少し難しいです。どちらも素晴らしいフレームワークですが、Yiiにはより多くのチュートリアルやドキュメントがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top