2012-01-08 19 views
1

私はプロジェクトを引き継ぎました。それはPHPとMySQLで長年にわたって構築されているアプリケーションです。既存のプロジェクトにCakePHPまたはCodeIgniterを統合

現在のところ、一種の良いフォルダ構造がありますが、コード自体は非常に書きにくいです。 ほとんどすべてのファイルにphp、sql、およびhtmlコードがあります。 PHPエコーを使用していない理由でJavaScriptコードが生成されています。

私はCakePHPまたはCodeIgniterのいずれかをさらに開発するために使用したいと思います。これは、新しい機能の場合、古いコードの中に既に存在するコードがいくつか記述されています(例:ユーティリティ関数など)。

これらのフレームワークのいずれかを既存のアプリに統合することは可能ですか? どちらが簡単ですか? あなたはそれを行う方法に関するリンクがありますか?

ありがとうございました。

答えて

2

私はCakePHPの経験がほとんどないので、私の答えはCodeIgniterとなるでしょう。私はCakePHPで約1日プレイしましたが、それはほぼ2年前です。私の意見では、おそらくCodeIgniterとの統合が簡単になるでしょうが、CakePHPでもっと経験豊富な人が私を間違っているかもしれません。

ここで私が取るアプローチです。私はこれをやったことはありませんが、それは問題に近づくための論理的な方法のようです。私はこのアプローチがCakePHPでも動作すると思います。

  1. まず、新しいバージョンのCodeIgniterをインストールしてください。

  2. 次に、アプリケーションの現在の構造を反映するコントローラとアクション(コントローラメソッド)を作成します。たとえば、URLがhttp://example.com/users/viewのページがある場合は、view()メソッドを使用してUsersコントローラを作成します。

  3. 次に、アプリケーションの現在の各ファイルのビューファイルを作成し、適切なコントローラメソッドを使用してロードします。ここでの目標は、CodeIgniterのルーティングシステムを使用してアプリケーションを動作させることですが、この時点ではモデル、ライブラリ、ヘルパーを利用することはありません。

  4. アプリケーションをCodeIgniterの上に置いたら、それをリファクタリングしてMVCパターンに合わせてください。ビューファイルからアプリケーションロジック(クエリ、フォーム処理など)を引き出し、コントローラに配置します。すべてのプレゼンテーションロジックとHTMLをビューに保存します。

  5. 次に、コントローラをリファクタリングします。コントローラーコードをモデル、ライブラリー、または他のコントローラーのメソッドに入れることができるので、ここで問題になります。出発点としては、すべてのクエリを適切なモデルに入れることです。あなたのコントローラを比較し、コードの重複がないかどうかを確認してください。それはコントローラーから取り除いて別の場所に置くべき良い兆候です。残念ながら、私は本当にあなたがそれぞれの状況でそれが異なるためにどこにあるのかは分かりません。

  6. あなたが満足している実行可能な状態になるまで、アプリケーションをリファクタリングし続けます...

うまくいけば、これが役に立ちます。私は確かにCodeIgniterを設定して設定するなどのいくつかの重要なステップを逃しましたが、これを真剣に考えているのであれば、それがどのように働くかについて良い考えを得るためにCodeIgniter User Guideを読むことを強くお勧めします。また、MVC(model-view-controller)にまだ慣れていない場合は、それに慣れておく必要があります。

実際にすべての解決策に適合するサイズはありませんが、うまくいけば、私はあなたにいくつかのアイデアを教えてくれました。ご質問がある場合や、少し混乱している場合は下記のコメントを削除してください。

0

私の考えでは、CodeIgniter(私はCakePHPを使用したことがない)とモデルをコントローラに書き込むほうが簡単です。

+0

ありがとうございました。古い部分(フレームワークなし)と新しい部分(フレームワーク)をどのように統合するのですか?私はフレームワークのindex.phpを変更する必要があると思います。 – memical

+0

index.phpとそれ以外は忘れてしまいます。あなたの関数/クラスを取り、新しいコントローラをcodeigniterで作成し、古いコードを使用しようとすると、それは古いアプリケーションがしたことを行います。 – Alex

+0

通常のファイルシステムがルートにあることを覚えておいてください。 codigniterをルートのディレクトリに置き、構築する必要がある方法でビルドしてサイトを作成します。準備が整うまでindex.phpファイル(ルートにある)またはリンクを実装しないでください。ルートにメインコントローラを置く準備が整ったら、元のファイルシステム全体を削除し、codeigniterの方法でシステムにアドレスします – Brad

関連する問題