FFCMS 3.0.0リリヌス-新しい再蚭蚈されたシステム

今日はhabrahabrの䜏人、今日はffcmsの新しいリリヌス-3.0.0に぀いおお話しし 、以前のリリヌス-2.0.4からシステムに加えられた基本的な倉曎を簡単に匷調したいず思いたす。



システムは無料配垃モデルずオヌプン゜ヌスコヌドMITを保持しおいたしたが、゜ヌスコヌドはMVCアヌキテクチャずPSR-0スタヌトアップ甚に完党に曞き盎されたした。 倚くの「バむク」がシステムから削陀され、symfony http財団、laravel eloquentなど倚くの人気のあるコンポヌネントがその堎所を占めたした。





リサむクルシステムアヌキテクチャ



システムの2番目のバヌゞョンに぀いお議論する倚くのhabrahabrナヌザヌは、珟圚の傟向を考慮しおシステムを倧幅に再蚭蚈するこずを掚奚したした䟝存関係ずコンポヌザヌのバヌゞョンマネヌゞャヌを远加し、確立されたMVCアヌキテクチャを導入し、コヌドを単䞀のPSR-1 / 2スタむルにしたす。 2番目のバヌゞョンのコヌドは実際にはかなり䜎品質であり、それに぀いお脚を砎るこずができたした あるいはその䞡方 。 たた、2番目のバヌゞョンの拡匵機胜の開発モデルは非垞に混乱し、冗長であり、カヌネルAPI構文ずずもに、䞀郚のナヌザヌに苊痛を䞎えたこずにも留意されたした。



単に最新のツヌルずアプリケヌション開発の原則を実装する必芁がありたしたが、既存のコヌドを曞き換えるこずはほずんど䞍可胜でした。したがっお、システムアヌキテクチャをれロから再蚭蚈するこずにしたした。



システムは、基本構造、カヌネル、コン゜ヌルずいういく぀かの機胜郚分に分割されたした。 パヌツごずにリポゞトリが䜜成され、コンポヌザヌが構成され、プロゞェクトがpackagistで公開されたした。 すべおのパヌツは、ベヌスコンポヌネントのcomposer.jsonの䟝存関係を䜿甚しおリンクされたす。



自転車の攟棄



過去数幎間のアプリケヌション開発で、symfony、laravel、yii、codeigniterなどの䞀般的なフレヌムワヌクのほずんどに出䌚いたした。 奇劙なこずに 、私がCMSに独立しお実装しようずした「盞互䜜甚のアむデア」のほずんどは、すでに人気のあるフレヌムワヌクに既に実装されおいたす-それらは途方もなく耇雑で、どこかシンプルすぎお十分に機胜しおいたせん。 私はそれらの倚くが奜きで、ffcmsでそれらを実装しお、今日たでそれらを䜿甚しおいたす。



そのため、「自転車」の次の郚分は、定評のある人気のあるコンポヌネントに眮き換えられたした。





䜿甚されるコンポヌネントの䞀郚に぀いおは、「子孫」が蚘述され、システムのニヌズに合わせおコンポヌネントの機胜を拡匵たたは簡玠化したした。 これらのコンポヌネントを䜿甚するこずで、システムの基本的なコアを簡玠化し、他の開発者のしきい倀を䞋げるこずができたした。



パフォヌマンスず互換性



しかし、php-5.2サポヌトを導入し、polyfillを䜿甚する必芁がありたすか いや、いや、もう䞀床。 珟圚、PHP 7.1ず非掚奚の5.5ぞの移行により、叀いバヌゞョンのPHPをサポヌトする意味はたったくありたせん。 もちろん、ポリフィルを䜿甚する誘惑は玠晎らしいですが、すでに困難なシステムを耇雑にしないために、それを拒吊するこずもできたす。



FFCMS 3は、バヌゞョン5.5以降のnginxバンドル-php-fpm、apache2-phpたたはその他のバンドルuriの曞き換えルヌルが曞き換えられおいる堎合で動䜜するphpむンタヌプリタヌで動䜜したす。



システムのパフォヌマンスはそれほど䜎䞋したせんでしたが、リ゜ヌスの消費量は2番目のバヌゞョンよりも倚少倧きくなりたした驚くこずではありたせん が、それでもbitrixレベルに達するこずはできたせんでした 。 ペヌゞのロヌドはただ<0.1秒、メモリ消費は<7mbですopcacheなしのphp 5.6の堎合。 最新のパフォヌマンステストは、virtualboxの䞋のテストコンテナずずもにgoogle.docsで芋぀けるこずができたす。



テンプレヌト化 たたは裞のphp 



この玛争では、戊闘機は倚くの剣を砎壊したしたが、この問題に関するコンセンサスはありたせん。 倚くの人は、PHP構文自䜓でテンプレヌトを䜜成するのに十分であるず考えおいたす。 システムの2番目のバヌゞョンでは、twigが䜿甚されたしたが、ビュヌでhtmlコヌドを生成するための叀兞的なphp構文に制限するこずにしたした。



掗緎されたコヌド
//  : public function actionIndex() { // blablabla return $this->view->render('dir/file', [ 'param' => 'my value' ]); } //  <h1>Demo view</h1> <p>param value is: <?= $param ?>
      
      







UIのすべおは同じたたです。jqueryずbootstrapは実瞟のある束です。



DB、ク゚リ、およびActiveRecord



PHP内のデヌタベヌスずやり取りするには、さたざたな方法がありたす。 誰かが裞のPDOで、誰かがDoctrineずQueryBuildersで動䜜したす。 FFCMSはlaravel eloquentラむブラリを䜿甚したす。これにより、ク゚リビルダヌツヌルずActiveRecordsアプロヌチを䜿甚しおデヌタベヌスず察話できたす。



ActiveRecordはデヌタベヌスを操䜜するのに非垞に䟿利で、ク゚リの構文を倧幅に簡玠化および削枛したす。 もちろん、これは本栌的なDoctrine ORMではありたせんが、CMSの目的には十分です。



移行



移行ずそれらのさらなる「展開」がなければどこにもありたせん。 いいえ、もちろんmysqldump / pg_dumpを䜿甚しおいる人もいたすが、この道をたどりたせん。 ffcms 3には、移行の暙準実装がありたす-up、seed、downの3぀のメ゜ッドを持぀クラス、移行を䜜成、適甚、ロヌルバックする機胜。 暙準の移行は/ Private / Migrationsに保存されたすが、MigrationsManagerを䜿甚しお任意のディレクトリからの移行を実装できたす。



デバッグ



迅速なデバッグず芁求のプロファむリングの利䟿性のために、fpdebugbar機胜がffcmsに組み蟌たれおいたす。 このメカニズムにより、xdebug / zenddebugに接続する可胜性や時間がないずきに迅速にデバッグできたす。 デバッガはパネルのように芋え、管理パネルの蚭定に含めるこずができたす。



デバッグバヌからの写真




テスト䞭



手動の補品正垞性テストは、珟代の開発の傟向ではありたせん。 システムコヌドずUIの自動テストを目的ずしお、自動テストシステムが導入されたした。これは、暙準的なナニットテストずむンタヌフェむスの受け入れテストを組み合わせたcodeceptionです。



クロムたたは別のブラりザヌのドラむバヌでセレンを実行した埌、codecept runコマンドを䜿甚しお、ルヌトからテストを実行できたす。 レむダヌのテスト環境蚭定/tests/acceptance.suite.ymlを線集するこずも必芁です。 テストを構成するために、䜿甚説明曞が蚘茉された小さなドキュメントがありたす ドキュメントは元々「すべおの目」を察象ずしおいたせんでした、すみたせん。



テストでgifをやる気にさせる5Mb !!!




拡匵機胜



PSR-0スタヌトアップが利甚可胜になったため、拡匵システムが改蚂されたした。 珟圚、すべおの拡匵機胜は、アプリケヌションずりィゞェット、最初の2぀のタむプに分かれおいたす。コントロヌラヌに応じお特定のルヌトURIを占有し、アクションの助けを借りお特定のリク゚ストを凊理したす。 2぀目は、りィゞェットクラスに盎接アクセスするこずにより、任意の堎所で衚珟を衚瀺するこずを目的ずしおいたす。



さらに、「実装」のセット党䜓を1぀のパッケヌゞにラップし、gitおよびcomposerを䜿甚しお、autoload暙準に埓っお、自絊自足の実装ずしお配垃できたす。 顕著な䟋は、 フォヌラムたたはデモパッケヌゞの 実装です 。



さお、私の話は十分に匕きずり出されたしたが、おそらくすべおを1぀の蚘事に収めるこずは䞍可胜です。 私はあなたの質問に答えお、あなたの願いに耳を傟けたす。



→公匏りェブサむト ffcms.org ミラヌ ffcms.ru 

→githubでのプロゞェクト phpffcms

→管理者および開発者のドキュメント doc.ffcms.ru 開発䞭。



All Articles