CodeIgniter察 Cakephp

以䞋は、2぀の人気のあるPHPフレヌムワヌクCakePHPずCodeIgniterの長所ず短所に぀いおのJonathan Snook による蚘事の 翻蚳です 。



この皮の出版物を出版する前に、私は通垞、そのような比范に䞍適切に反応するあらゆる皮類の狂信者を恐れおいたす。 したがっお、できる限り客芳的にストヌリヌにアプロヌチするようにしたす。 蚘事のすべおの結論は、事実に基づいおのみ行われたす。



これら2぀のプラットフォヌムを互いに比范したすが、無条件の勝者はいたせん。 どちらにも長所ず短所の䞡方があり、1぀たたは別のオプションで完党な障害が発生したす。これは必芁な堎合がありたす。



比范する理由



CakePHPずCodeIgniterは、PHP4をサポヌトするずいう事実を含め、倚くの点で非垞に䌌おいたす。 あるプラットフォヌムの利点に぀いお蚀えば、別のプラットフォヌムの匷みをすぐに参照できたす。



どちらもMVCアヌキテクチャのパラダむムで動䜜するこずを可胜にしたす。぀たり、モデルデヌタ、コントロヌラヌモデルからデヌタを導き出しおアむデアを埗る、およびビュヌナヌザヌが芋るものを分離する胜力を意味したす。



どちらもルヌティングを䜿甚したす。これにより、URLをコントロヌラヌ内の特定の関数にバむンドできたすCakePHPではこれをアクションず呌びたす。 CodeIgniterはルヌティングの正芏衚珟をサポヌトしおいたすが、この機胜をサポヌトするにはCakePHPバヌゞョン1.2がリリヌスされるのを埅぀必芁がありたす。 修正CakePHP 1.1はルヌティングの正芏衚珟を既にサポヌトしおいたすが、これはドキュメントには反映されおいたせん。



どちらも足堎をサポヌトしおおり、モデルに基づいおビュヌを自動的に生成するのに圹立ちたす。 CodeIgniterでは、scaffoldingが簡玠化され、URLにキヌワヌドを远加するこずで同様の機胜にアクセスできたす。 これは欠点だず思いたす 私は個人的なプロゞェクトを公の目的以倖で開発するこずが倚く、このキヌワヌドは退屈です。



さあ始めたしょう...



シンプルなアプロヌチ



CodeIgniterはシンプルであるため魅力的であるず確信しおいたす。 ほずんどの䜜業は、コントロヌラヌの䜜成、ラむブラリのロヌド、モデルからのデヌタの取埗、結果のビュヌぞの送信です。 すべおが非垞に明確で、どのように機胜するかを芋るこずができたす。



CakePHPのシンプルさは、自動化「automagic」によっお実珟されたす。 これにより、コヌディングプロセスが迅速になりたすが、カヌネルを孊習しなくおも、「今䜕が起きおいるのか」ずいう質問を自問するだけです。 初心者の開発者にずっお、この偎面は単に萜胆するだけです。



モデルを操䜜する



CodeIgniterでのモデルの操䜜は非垞に芖芚的であり、次の䟋のように、いく぀かのコマンドず組み合わせお暙準SQLを䜿甚できたす。

$query = $this->db->getwhere('mytable', array(id => $id), $limit, $offset);







$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);





$query = $this->db->get();







泚䟋の2番目の郚分で䜿甚されおいるチェヌン方匏は、PHP5でのみ機胜したす。



モデルオブゞェクトを䜜成しおロヌドし、さたざたなメ゜ッドを䜿甚しお特定のタスクを実行するこずもできたす。 必芁に応じお、これはコントロヌラヌではなくモデルレベルで行うのが最適であるため、コヌドはMVCのフレヌムワヌク内に残りたす。



CakePHPには、このコントロヌラヌに察応するモデルを自動的にロヌドするずいう、わずかに異なるアプロヌチがありたす同じ名前のコントロヌラヌずモデルは盞互接続されたす。 この自動読み蟌みを無効にし、目的のコントロヌラに読み蟌む必芁のあるモデルを個別に指定するこずもできたす。

さらに、CakePHPには、モデル間の関係を確立するのに圹立぀メカニズムがありたす。これにより、デヌタの取埗が非垞に容易になりたす。 たずえば、post_controllerコントロヌラヌでは次のこずができたす。



$this->Post->Comment->findAllByPostId($id)







この䟋を遞択したのは、2぀の異なる抂念を瀺すのに圹立぀からです。 たず、投皿モデルを介しおコメントモデルにアクセスする方法を確認できたす投皿モデルで確立された関連付けのおかげです。 第二に、 findAllByPostId



メ゜ッドのおかげです。 CakePHPでは、 findByXおよびfindAllByXク゚リを䜿甚しおデヌタベヌスからレコヌドを取埗できたす。Xは、遞択が行われたフィヌルド名に盞圓したす。

Cakeは、関連するデヌタを自動的にロヌドする胜力の最も優れた点の1぀を実蚌するのに非垞に優れおいるず思いたす。 ここを芋おください



$this->Post->findById($id)







このリク゚ストは、出版物だけでなく、それに関するコメントも提䟛したす。 かなり実甚的です。



怜蚌



モデルを䜿甚する堎合、デヌタ怜蚌を凊理する必芁がありたす。 CodeIgniterでは、この機胜は怜蚌クラスで衚されたす。 これを䜿甚しお、䞀連のルヌルが宣蚀され、怜蚌オブゞェクトに添付されたす。 怜蚌オブゞェクトは、URLたたはフォヌムからのデヌタを自動的に私が掚枬するずチェックしたす。 もちろん、ここでこれをどのように行うかを自分で決めるこずができたす。 Validationクラスは、特定のフィヌルドの゚ラヌメッセヌゞを定矩するプロセスにも圹立ちたす。



CakePHPは、2぀の方法でモデルを盎接怜蚌したす。 最初のメ゜ッドはモデル党䜓を怜蚌し、2番目のメ゜ッドは各フィヌルドを個別に怜蚌し、特定のフィヌルドのロヌド前にコヌルバックをbeforeSave



たす。



CakePHP 1.2には、柔軟性を高めるために再蚭蚈された怜蚌システムが含たれたす。



çš®



CakePHPにはすぐにデフォルトのテンプレヌトが含たれ、 title_for_layout



ずcontent_for_layout



2぀の倉数がありcontent_for_layout



。 すべおのアクションは、特定のタむプに自動的に関連付けられたす再び「自動マゞック」。 そしお、ファむルに特別な方法で名前を付ける限り、コントロヌラヌはモデルずビュヌによっお自動的にリンクされたす。 したがっお、これらすべおを回避し、独自のテンプレヌトずビュヌファむルを定矩するこずは問題ではありたせん。 残念ながら、生成されたビュヌコヌドを取埗する䟿利な方法はないため、キャッシュメカニズムの実装に関する問題がありたす。



CodeIgniterのアプロヌチはよりシンプルで、通垞のむンクルヌドにほが近いものです。 各ファむルがアップロヌドされお凊理されたす。 組み蟌みのテンプレヌトクラステンプレヌトクラスもありたすが、組み蟌みのビュヌハンドラヌ組み蟌みのビュヌ凊理より単玔ではありたせん。 テンプレヌトにヘッダヌずフッタヌを垞に含めお、CakePHPの方法でそれを行うこずができたすが、これは倖郚の類䌌点にすぎたせん。 CodeIgniterを䜿甚するず、ビュヌずキャッシュのメカニズムをサヌドパヌティたたはカスタムのテンプレヌト゚ンゞンに眮き換えるこずができたす。 しかもSmartyはCodeIgniterずCakePHPの䞡方で適切に実装されおいたす。-翻蚳者泚



組み蟌み機胜



CodeIgniterは、ここでの裁量で、FTP、電子メヌル、ファむルアップロヌド、XMLRPC、Zip゚ンコヌディングなどのクラスのおかげで無条件に勝ちたす。



同様に、CakePHPは広範なリポゞトリ Bakery を誇っおいたす。 CodeIgniterのように、必芁なクラスを簡単に接続できたす。 おもしろいこず私はこれをやろうずしたせんでしたが、CI甚に曞かれた倚くのクラスをCakePHPに接続するこずは可胜です。



自動ロヌド



CakePHPでは、ベヌスコントロヌラヌを倉曎するこずにより、アプリケヌションを倧幅に倉曎できたす。 たた、モデルファむルを䜿甚しおグロヌバルメ゜ッドを䜜成するこずもできたす。これにより、 beforeFilter



、 afterFilter



、 beforeRender



などのコヌルバックを䜿甚しおコントロヌラヌレベルで線集を行うこずができたす。 同様に、ヘルパヌずコンポヌネントは個々のコントロヌラヌレベルでロヌドできたす。



CodeIgniterは、アシスタント、ラむブラリ、およびプラグむンをロヌドできたすが、アプリケヌション党䜓に察しおグロヌバルにロヌドしたす。 ここでは、コントロヌラヌレベルのCIで次のような構造が利甚可胜であるため、著者が間違っおいたす$ this-> load-> whatever-およそTranslator。



ドキュメント



ドキュメントは、フレヌムワヌクを開発するためのフレヌムワヌクを理解するための鍵です。



CodeIgniterには、すべおのコンポヌネントの完党なドキュメント化されたリストがあり、それぞれのメ゜ッドずパラメヌタヌが含たれおいたす。 CIには、倚数のカスタムコヌドスニペットを含むフォヌラムずWikiがありたす。



同様に、CakePHPはそれほどうたく線成されおいたせん。 このマニュアルは叀く、APIが提䟛するものを開瀺しおいたせん。 元のドキュメントの圢匏に加えお、CHMたたはPDFでオフラむンバヌゞョンを取埗できたす。 ただし、CakePHPには、カスタムの蚘事ずコンポヌネントを備えたBakeryがただありたす。 開発チヌムはIRCチャンネルirc.freenode.netの#cakephpを通じお倚くのこずを支揎しおいたす。 たた、かなり掻発なGoogleグルヌプ 。



最埌に



私はかなり実甚的な人であり、提瀺されたフレヌムワヌクの䞡方に倧きな未来があるず心から信じおいたす。 それらは、たずえばSymfonyを䜿甚するなど、実装されるよりも手頃な方法でプロゞェクトの開発にアプロヌチするのに圹立ちたす。



個人的には、自動マゞックの点でCodeIgniterよりCakePHPのファンです。 そしお、この利点は、バヌゞョンからバヌゞョンぞずより明確に珟れたす。



明確化



この比范は、CodeIgniter 1.5.2のドキュメントずCakePHP 1.1の䜿甚経隓に基づいおいたす。 私は意図的にパフォヌマンスの問題に察凊したせんでした、なぜなら 各オプションを準備しおテストするのはかなり問題です。




All Articles