国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
引言:
Ruby on Rails催生變革
新一代框架的誕生
商業(yè)利益與大道至簡
國內(nèi)PHP開發(fā)框架
反省と進歩
ホームページ php教程 php手冊 PHP開発フレームワークの現(xiàn)狀と展望

PHP開発フレームワークの現(xiàn)狀と展望

Jun 13, 2016 pm 12:33 PM
php rails ruby そして 展望 開発する 導入 フレーム 熱い 現(xiàn)狀 とともに

PHP開發(fā)框架的現(xiàn)狀和展望

引言:

  隨著Ruby on Rails的火爆,PHP這個流行的Web應用腳本語言也出現(xiàn)了大量的新一代開發(fā)框架。與此同時,國內(nèi)PHP開發(fā)者也開始緊跟國外發(fā)展,推出了不同的開發(fā)框架。

Ruby on Rails催生變革

  在RoR流行之前,PHP領域也有不少開發(fā)框架,例如Mojavi、WACT、PHPMvc和Seagull等。這些框架雖然也采用了MVC模式、數(shù)據(jù)庫抽象層等技術。但由于當時PHP本身不像現(xiàn)在這樣流行,所以這些框架都沒有得到大量應用,最終歸于沉寂。
  而在感受到RoR提供的快速開發(fā)能力后,PHP社區(qū)像被注入了興奮劑。各種應用技術和開發(fā)框架層出不窮。

新一代框架的誕生

  PHP社區(qū)在被RoR震暈后,沒有陷入過多的爭論。而是立即行動起來,開始了新一代框架的設計。首先出現(xiàn)的第一批框架幾乎都是RoR的克隆。例如PHP on Trax(連名字都借鑒Ruby on Rails)和TaniPHP、Akelos等。這些框架最大的特點就是力求100%克隆RoR,不管是采用的架構、設計模式,還是使用方法。
  這幾個框架一開始確實吸引了開發(fā)者的注意,但隨著開發(fā)者的深入了解,這些框架頭上的光環(huán)逐步褪色?;逎y懂的架構、糟糕的性能,以及太多的限制,讓這些框架難以在實際項目中運用。
  此時,許多PHP開發(fā)者認為可以借鑒RoR的設計思想,但不應照搬RoR的結構和實現(xiàn)。為此,一些同樣推崇快速開發(fā)的框架開始在PHP社區(qū)出現(xiàn)。這些框架中,CakePHP和Symfony可謂佼佼者。

CakePHP(http://www.cakephp.org/)
  CakePHP充滿了RoR的影子,從ActiveRecord模式到視圖的布局管理都和RoR非常相似。而且CakePHP一開始也嘗試實現(xiàn)與 RoR一樣的許多東西。但CakePHP的開發(fā)團隊后來發(fā)現(xiàn)PHP語言和Ruby語言存在巨大區(qū)別,因此RoR中的許多設計即便能夠在PHP中實現(xiàn),也是缺乏實用價值的。
  CakePHP在發(fā)展中逐步走出了RoR的陰影,開始探索更能發(fā)揮PHP語言本身優(yōu)勢的架構和實現(xiàn)。因此有一段時間CakePHP的API發(fā)生了劇烈的變化,以致其他開發(fā)者紛紛停下腳步處于觀望狀態(tài)。
  但由于前期一些架構的不合理和對RoR太多的模仿,導致CakePHP的核心部分越來越難以理解,運行性能也不盡人意。而且CakePHP將一個龐大的數(shù)據(jù)庫操作對象作為所有業(yè)務對象的基礎。這雖然利于快速開發(fā),但卻導致對業(yè)務邏輯對象的測試非常困難。
  對于較小型的項目,CakePHP非常理想。出色的快速開發(fā)能力、豐富的API和詳盡的文檔都可以幫助開發(fā)者很快完成工作。但隨著項目規(guī)模的增加,CakePHP的局限性也變得突出。

Symfony(http://www.symfony-project.com/)
  Symfony是一個非常成熟的框架,大量利用了已有的開源項目。Symfony使用Mojavi的核心代碼實現(xiàn)了框架的MVC模式,利用 Propel作為數(shù)據(jù)庫抽象層。Symfony不僅功能強大,而且對Ajax有全面的支持。加上官方網(wǎng)站提供的大量文檔和教程,并擁有一個活躍的社區(qū),因此受到許多開發(fā)者的歡迎。
  但是,Symfony最大的問題也在于使用了太多風格迥異的開源項目來組合成框架。由于Mojavi和Propel本身都相當復雜,因此Symfony的結構非常復雜,難以理解和學習。
  不過對于希望選擇一個框架作為企業(yè)內(nèi)部系統(tǒng)基礎架構的企業(yè)來說,Symfony的成熟度、豐富的文檔和活躍的社區(qū)都是值得考慮的。畢竟企業(yè)內(nèi)部系統(tǒng)更為看重的是穩(wěn)定性和長期的支持。

商業(yè)利益與大道至簡

  看到PHP開發(fā)框架的潛在商業(yè)價值后,Zend.com聯(lián)合IBM宣布將要推出一個真正能夠發(fā)揮PHP優(yōu)勢的開發(fā)框架。一時間,這個消息在整個PHP社區(qū)引起了地震。大家都開始期盼這個具有“官方”背景的開發(fā)框架能夠為PHP開發(fā)者指出一條正確的道路。
  不過世事難測,就在Zend Framework團隊公布幾個代碼片斷后,立即就有開發(fā)者指出這些代碼片段是不可能實現(xiàn)的。事實證明這些代碼片段不過是美好的理想。限于PHP語言本身的能力,Zend Framework最終沒有實現(xiàn)當初承諾提供的類似RoR中ActiveRecord模式的實現(xiàn)品。

Zend Framework(http://framework.zend.com/)
  Zend Framework大量應用了PHP5中面向對象的新特征:接口、異常、抽象類、SPL等等。這些東西的應用讓Zend Framework具有高度的模塊化和靈活性。同時,因為嚴格遵循“針對接口編程”和“單一對象職責”等原則,讓Zend Framework很有希望成為一個出色的企業(yè)應用開發(fā)框架。
  但不幸的是Zend Framework直到今天,也沒有做出更多的突破。在使用Zend Framework開發(fā)時,框架對應用程序自身最重要的領域邏輯分離沒有提供任何幫助。如果希望開發(fā)出真正健壯的企業(yè)應用,仍然需要開發(fā)者做出相當?shù)呐?,并且在Zend Framework之上建造自己的基礎設施。
  針對這點,批評者指出Zend Framework雖然大量應用PHP5的新特征,但卻沒有將這些相對于PHP4的優(yōu)勢轉化為能夠為開發(fā)者提供幫助的東西。

  對于簡單和小型的項目來說,Zend Framework不但不能提高開發(fā)效率。反而因為在框架中應用了大量面向對象設計和PHP5的新特征,對開發(fā)者提出了更高的要求,間接增加了項目的開發(fā)成本。而對于較大的項目和企業(yè)應用,Zend Framework倒是一個不錯的基礎。但要創(chuàng)建一個成功的應用,仍然需要付出不小的努力。并且要時刻注意Zend Framewok的性能問題。

Code Igniter(http://www.codeigniter.com/)
  Code Igniter可以說是一匹黑馬。Code Igniter出現(xiàn)之時正是Symfony和CakePHP大行其道、Zend Framework萬眾期待的時刻??蓱{借著獨特的設計思想,Code Igniter吸引了大批開發(fā)者。這點從其火爆的官方論壇就可得到證實。
  Code Igniter推崇“簡單就是美”這一原則。沒有花哨的設計模式、沒有華麗的對象結構,一切都是那么簡單。幾行代碼就能開始運行,再加幾行代碼就可以進行輸出。大部分日常開發(fā)中用到的東西都可以立即找到,并且可以很容易的使用。Code Igniter可謂是“大道至簡”的典范。
  但是,Code Igniter本身的實現(xiàn)不太理想。內(nèi)部結構過于混亂,雖然簡單易用,但缺乏擴展能力。因此在發(fā)展到1.5系列版本時,作者不得不通過增加各種hooks來為框架提供擴展能力。

國內(nèi)PHP開發(fā)框架

  國內(nèi)雖然過去也曾有開發(fā)者發(fā)布過一些框架,但這些框架要么太過簡單,要么和某一類型的應用緊密耦合,缺乏通用性。直到進入2006年,隨著PHP在國內(nèi)的大量應用和追捧,真正的國產(chǎn)PHP開發(fā)框架才陸續(xù)發(fā)布。

FCS(http://fcs.org.cn/)
  FCS是從Java的Struts結構移植過來的中文PHP開發(fā)框架,使用面向對象的開發(fā)結構和MVC模式,并且模擬實現(xiàn)了Struts的標簽庫,借鑒了國外一些不錯的思想,尤其是Java框架方面,因此熟悉Java的開發(fā)人員相對比較容易上手,其模版引擎、緩存機制、認證機制和擴展性方面均表現(xiàn)不凡。
  在借鑒國外優(yōu)秀思想的同時,F(xiàn)CS也更多地考慮了國內(nèi)的應用開發(fā)需要。PHP4兼容、完全支持UTF-8,以及PATHINFO支持等,更加有利于國內(nèi)的主機環(huán)境和開發(fā)需要。秉著易用和易擴展的原則,F(xiàn)CS采用容易理解的項目、模塊和操作機制加上內(nèi)置的一些自動化操作方法,讓應用開發(fā)變得更加簡單,其功能可以通過基類庫以及各種插件的形式靈活擴展,從而滿足日益增長的業(yè)務需求。正是因為具備良好的開發(fā)結構,使得FCS在開發(fā)大型應用的時候并不會顯得有很多障礙,基于構件的方式,以及配合框架的項目管理機制同樣可以讓你在處理大型應用的時候一展所長。
  FCS力求精簡的代碼和全中文化的文檔、注釋,有利于國內(nèi)PHP開發(fā)人員學習和掌握,不過根據(jù)目前的情況來看,官方的文檔和社區(qū)支持目前還比較缺乏,而且對Ajax的支持還不夠全面,因此國內(nèi)的應用成熟度還不夠。

FleaPHP(http://www.fleaphp.org/)
開発の観點から見ると、FleaPHP は歴史のあるフレームワークです。過去 3 年間で、FleaPHP は、PFC1 から PFC3 シリーズと、flea1 実験的フレームワークをリリースした後、著者によって立ち上げられた最初の真に成熟した安定した開発フレームワークです。
他の多くのフレームワークとは異なり、FleaPHP は元々、迅速な開発と PHP 自體の利點の最大限の活用という 2 つの焦點を中心に設計されました。したがって、FleaPHP の最大の特徴は、モジュール性と拡張性が非常に高いことです。
FleaPHP フレームワークのコアは非常に小さいですが、柔軟な構成により、さまざまな種類のインフラストラクチャを組み合わせることができます。単純なスクリプト ページの場合、FleaPHP は MVC モードをロードする必要はなく、アプリケーションにビジネス ロジックとデータベース サービスを提供するだけで済みます。複雑なアプリケーションの場合、FleaPHP は、MVC モードの呼び出し、アクセス制御、データ検証からファイルのアップロード、畫像処理などに至るまで、さまざまなタスクを完了できます。
この優(yōu)れたカスタマイズ機能と拡張機能があるからこそ、FleaPHP は「単純なアプリケーションからエンタープライズ開発まで、さまざまなニーズに応える」という目標に真に近づくことができるのです。また、他の多くのフレームワークとは異なり、FleaPHP は実際の開発中に完全に改良されるフレームワークです。そのため、FleaPHPの開発により、さまざまな実用的なアプリケーションが次々と登場しています。 FleaPHP 公式 Web サイトでは、さまざまな実踐的なアプリケーションをご覧いただけます。最も単純な企業(yè)プロモーション Web サイトから、複雑なコミュニティ Web サイト、企業(yè)內(nèi)部システムなどまで、數(shù)多くあります。

FleaPHP は完全國産フレームワークとして、完全な中國語ドキュメントとコードコメントを備えており、拡張機能に関しても國內(nèi)開発者の実際のニーズに配慮しています。したがって、FleaPHP は海外のさまざまなフレームワークと比較して、國內(nèi)の開発者に受け入れられやすいです。
しかし、まさに中國にあるからこそ、FleaPHP は海外の同等製品よりも多くの困難に直面しています。貢獻者の不足、失禮な批判、懐疑的な目などにより、FleaPHP の開発チームのメンバーにはさらなる獻身的な努力が求められています。また、十分な貢獻者が不足しているため、FleaPHP フレームワークは現(xiàn)在、ドキュメントや拡張機能の點で他の成熟したフレームワークに遅れをとっています。
そして、他のすべての PHP 開発フレームワークと同様に、FleaPHP は開発者がアプリケーション ドメイン ロジックを分離するのに役立つ方法を見つけていません。ガイダンス文書はありますが、ジュニア開発者にとっては、すぐに使用できるドメイン ロジックの基礎が非常に実用的です。

反省と進歩

RoR がもたらした衝撃はまだ収まっていませんが、PHP 開発者はすでに RoR の足跡を盲目的に追従することが本當に PHP 開発に質(zhì)的な変化をもたらすことができるのかを考え始めています。
RoR 自體の設計思想に加えて、RoR が大きな成功を収めたもう 1 つの重要な理由は、RoR が Ruby という言語の強みを最大限に活用していることです。 Ruby 動的言語の利點を最大限に活用してください。 PHP では、RoR のデザインをそのままコピーすると、PHP 言語自體の制限に遭遇します。これらの制限を回避するには、開発者はいくつかの理解できないトリックを使用して問題を解決する必要があります。しかし、そうすると、フレームワークの構造があいまいになり、パフォーマンスが低下することがよくあります。
この考察では、Code Igniter や FleaPHP などのフレームワークがこの質(zhì)問に対する最良の答えです。 PHP 言語自體の利點を最大限に活用することによってのみ、PHP 開発は真に簡単かつ興味深いものになります。

現(xiàn)在、さまざまな PHP 開発フレームワークがそれぞれ獨自の特徴を持っていますが、ほぼすべてのフレームワークが開発効率の向上を目指しています。しかし、これらのフレームワークの中には、アプリケーションの保守性を向上させるという問題に注目しているものもありますが、ドメイン ロジックの分離という重要な問題に対する解決策を提案したものはありません。そして、これがまさにこれらのフレームワークが將來進むべき方向です。
単純な Web アプリケーションと複雑なエンタープライズ アプリケーションの場合、この 2 つの違いは、固定されたアーキテクチャではニーズを満たすことができないことを意味します。したがって、カスタム アーキテクチャ機能を提供できる FleaPHP のようなフレームワークを使用すると、開発者はフレームワークのさまざまな組み合わせを試して、単純なものから複雑なものまでさまざまなレベルのニーズを解決できます。

將來、PHP は Web 開発の分野でますます重要なプラットフォームになるでしょう。したがって、より良い開発フレームワークがより多く出現(xiàn)すると私たちは信じています。ただし、開発者としては、問題を解決するために必ずしも特定のフレームワークを使用する必要はありません。しかし、まさにこれらの新しいフレームワークのおかげで、PHP を使用して Web アプリケーションを開発することに対する私たちの理解と把握が何度も促進されてきました。

--------------------------------------

追記: この記事の元の著者は FleaPHP の開発者の 1 人で、國內(nèi) PHP

への貢獻に感謝します。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPバージョンをアップグレードする方法は? PHPバージョンをアップグレードする方法は? Jun 27, 2025 am 02:14 AM

PHPバージョンのアップグレードは実際には難しくありませんが、鍵は操作手順と予防策にあります。以下は特定の方法です。1。現(xiàn)在のPHPバージョンと実行環(huán)境を確認し、コマンドラインまたはPHPINFO.PHPファイルを使用して表示します。 2。適切な新しいバージョンを選択してインストールします。 8.2または8.1でインストールすることをお勧めします。 Linuxユーザーはパッケージマネージャーを使用し、MacOSユーザーはHomeBrewを使用します。 3.構成ファイルと拡張機能を移行し、php.iniを更新し、必要な拡張機能をインストールします。 4.ウェブサイトが正常に実行されているかどうかをテストするには、エラーログを確認して、互換性の問題がないことを確認してください。これらの手順に従うと、ほとんどの狀況でアップグレードを正常に完了できます。

PHPでのクロスサイトリクエスト偽造(CSRF)攻撃を防ぐにはどうすればよいですか? PHPでのクロスサイトリクエスト偽造(CSRF)攻撃を防ぐにはどうすればよいですか? Jun 28, 2025 am 02:25 AM

topreventcsrfattacksinphp、demifficanti-csrftokens.1)生成と測定と測定を繰り返し、orbin2hex(random_bytes(32))、savethemin $ _ session、andincludeTheminformsashdidnputs.2)

PHP初心者ガイド:ローカル環(huán)境構成の詳細な説明 PHP初心者ガイド:ローカル環(huán)境構成の詳細な説明 Jun 27, 2025 am 02:09 AM

PHP開発環(huán)境をセットアップするには、適切なツールを選択し、構成を正しくインストールする必要があります。 phpの最も基本的なPHPローカル環(huán)境には、3つのコンポーネントが必要です。Webサーバー(ApacheまたはNginx)、PHP自體、およびデータベース(MySQL/Mariadbなど)。 biter初心者は、インストールプロセスを簡素化するXAMPPやMAMPなどの統(tǒng)合パッケージを使用することをお勧めします。 XAMPPは、WindowsとMacOSに適しています。インストール後、プロジェクトファイルはHTDOCSディレクトリに配置され、LocalHostからアクセスされます。 mampはMacユーザーに適しており、PHPバージョンの便利なスイッチングをサポートしていますが、無料版の機能は限られています。 Advanced Advancedユーザーは、Macos/LinuxシステムでHomebrewによって手動でそれらをインストールできます

2つのPHPアレイを組み合わせる方法ユニークな値は? 2つのPHPアレイを組み合わせる方法ユニークな値は? Jul 02, 2025 pm 05:18 PM

2つのPHPアレイをマージし、一意の値を保持するには、2つの主要な方法があります。 1.インデックスアレイまたは重複排除のみの場合、array_mergeとarray_uniqueの組み合わせを使用します:最初のマージArray_merge($ array1、$ array2)を使用してから、array_unique()を使用して、最終的にすべての一意の値を含む新しいアレイを取得します。 2。関連アレイと最初の配列のキー値のペアを保持したい場合は、演算子を使用してください。$ result = $ array1 $ array2。これらの2つの方法は、キー名が保持されているか焦點があるかに応じて、異なるシナリオに適用できます。

PHP出口機能の使用方法は? PHP出口機能の使用方法は? Jul 03, 2025 am 02:15 AM

Exit()は、すぐにスクリプトの実行を終了するために使用されるPHPの関數(shù)です。一般的な用途には次のものが含まれます。1。ファイルが存在しない、または検証が失敗するなど、例外が検出されたときにスクリプトを事前に終了します。 2。デバッグ中の出力中間結果と実行を停止します。 3。Header()と組み合わせてリダイレクトした後、Exit()を呼び出して、後続のコード実行を防ぎます。さらに、exit()は、文字列パラメーターを出力コンテンツまたはステータスコードとして整數(shù)として受け入れることができ、そのエイリアスはdie()です。

HTMLで記事、セクション、および脇にセマンティック構造を適用する HTMLで記事、セクション、および脇にセマンティック構造を適用する Jul 05, 2025 am 02:03 AM

HTMLでのセマンティックタグの合理的な使用は、ページ構造の明確さ、アクセシビリティ、SEO効果を改善することができます。 1.ブログの投稿やコメントなどの獨立したコンテンツブロックに使用されると、自己完結型でなければなりません。 2。通常はタイトルを含む分類関連のコンテンツに使用され、ページのさまざまなモジュールに適しています。 3。サイドバーの推奨事項や著者プロファイルなど、メインコンテンツに関連する補助情報に使用されますが、コアではありません。実際の開発では、ラベルを組み合わせて、その他を組み合わせ、過度のネストを避け、構造をシンプルに保ち、開発者ツールを使用して構造の合理性を検証する必要があります。

PHPのセッションデータにアクセスするにはどうすればよいですか? PHPのセッションデータにアクセスするにはどうすればよいですか? Jun 30, 2025 am 01:33 AM

PHPのセッションデータにアクセスするには、最初にセッションを開始し、次に$ _Session HyperGlobal Arrayを介して動作する必要があります。 1。セッションはsession_start()を使用して開始する必要があり、出力の前に関數(shù)を呼び出す必要があります。 2。セッションデータにアクセスするときは、キーが存在するかどうかを確認します。 ISSET($ _ Session ['key'])またはarray_key_exists( 'key'、$ _ session)を使用できます。 3.セッション変數(shù)を設定または更新する必要は、手動で保存せずに$ _Sessionアレイに値を割り當てるだけです。 4. unset($ _ session ['key'])を使用した特定のデータをクリアし、すべてのデータをクリアし、空の配列に$ _sessionを設定します。

PHPの再帰機能とは何ですか? PHPの再帰機能とは何ですか? Jun 29, 2025 am 02:02 AM

再帰関數(shù)は、PHPのセルフコール関數(shù)を指します。コア要素は1です。終了條件(基本例)の定義、2。問題を分解し、再帰的に呼び出す(再帰的な例)。階層構造を扱う、重複したサブ問題の分解、または計算の要因、走査ディレクトリなどのコード読みやすさの改善に適しています。ただし、メモリ消費とスタックオーバーフローのリスクに注意を払う必要があります。書くときは、出口條件を明確にする必要があり、基本的な例に徐々にアプローチし、冗長パラメーターを避け、小さな入力をテストする必要があります。たとえば、ディレクトリをスキャンすると、関數(shù)はサブディレクトリに遭遇し、すべてのレベルが橫斷されるまで再帰的に呼び出します。

See all articles