領域:WordPress開発への現代的なアプローチ
WordPressのもつれたコードベースに対する私の軽daはよく知られています。あなたが技術的に熟練していない限り、私はその使用に反対することをお勧めします。しかし、私の批判は改善への欲求に由来しています。これは、優れた選択肢が現れ、より論理的で効率的な開発プロセスを提供することを望んでいます。 WordPressを合理化しようとする試みは、私の見解では、肯定的なステップです。
最近、「WordPress開発者のためのフレームワーク」として請求されたThemosisというプロジェクトが浮上しました。この記事では、テンミーとその使用法を調査し、その例プロジェクト、つまり書店アプリケーションを調べます。 キーハイライト:themosisは、WordPressの開発者のフレームワークとして設計された新しいプロジェクトであり、WordPressの混oticとしたプラグインアーキテクチャに開発を簡素化し、構造を課すことを目指しています。
「フレームワーク」という用語は、PHP開発者にとって誤解を招く可能性があります。 WordPressには、すでに多数の不要なコンポーネントが含まれています。フレームワークは通常、ミニマリストの原則と分離されたコンポーネントを順守し、複雑なアプリケーションを構築します。
領域は、伝統的な意味での枠組みではありません。 WordPressと統合して開発を簡素化するが、必ずしもそのサイズを縮小するとは限らないAPIです。テーマ症は、名前空間、クラス、匿名関数、作曲家のサポートなど、最新のPHPを使用してWordPressコンポーネントを作成するためのAPIを提供します。本質的に、テンミー症は、他のプラグインを構築するために使用されるMVC駆動のLaravelにインスパイアされたWordPressプラグインです。 LaravelとPhalconに似た独自のルーター(Laravelスタイルのルート定義)とテンプレートエンジン(スカウト)が含まれており、WordPressサポートが追加されています。 たとえば、テンプレートループ:
データ取得にWordPress APIを使用し、
クラスはWordPressコンテンツループ用に特別に設計されています。 インストール領域のインストールには、作曲家とWordPressコマンドラインツールが含まれます。 Composerとのテーマ症プロジェクトの作成には、最新のWordPressバージョンが自動的に含まれています。標準のWordPressインストールスクリプトがセットアップを完成させます。 公式のインストール手順を参照するか、最初にプロジェクトの例を試してください(以下で詳しく説明してください)。
の例プロジェクト:Bookstoreアプリ
themosisは、書店アプリケーションの例を提供します。
Bookstoreアプリのテスト
それをテストするには、Homesteadが改善されています。新しいサイトを登録してください:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
を追加することを忘れないでください(Homesteadによると、指示が改善されました)。
bookstore.local
リポジトリ(/etc/hosts
)をクローンし、
git clone https://www.php.cn/link/7101e4daaff4511510bbd4e6a0862fb7 themosis_example
http://bookstore.local:8000
セットアップは非常に迅速かつ簡単でした。
パフォーマンスは驚くほど速かった。
。 Themosisはプラグインであるため、Bookstoreのコードはプラグインディレクトリ内にあります。
3つの主要なサブフォルダーが存在します:(脅威駆動のWordPressロジック)、(テンシスソースコード - 他のフレームワークを参照)、および
(作曲家の依存関係)。コードには最新のプラクティス(名前空間、クラス、包括的なドキュメント)が組み込まれていますが、マイナーな時代遅れの要素は残っています(例:、PHPタグを閉じる)。
app
src
vendor
<?php defined('DS') or die('No direct script access.');
MVC構造は明確に定義されていますが、2つの親フォルダーにわたる断片化を改善できます。 routes
フォルダー(Laravelと同様)は、同等の構文を使用します。コントローラーはビューから分離されており、モデルはコントローラーによって使用され、データをビューに渡します。 home.controller.php
:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
ビューは、トラバーサルにドット表記を使用します(例:pages.home
マップへのマップ)。app/views/pages/home.scout.php
)。
パラメーターを使用した
ルーティング
ルーティングは簡単です。 たとえば、検索ページでは、WordPressの検索機能を直接使用します。このアプローチは、WordPressの本質的に欠陥のある検索機能を抽象化し、より簡単な交換を促進します。
- map: bookstore.local to: /home/vagrant/Code/themosis_example
カスタムページの作成
コントローラーとビューを使用してカスタムページを作成しましょう。
ルートを追加します:
routes.php
return View::make('pages.home')->with(array( 'promo' => Books::getPromoBook($this->page), 'books' => Books::getPopularBooks($this->bookId), 'news' => News::get(), 'newspage' => get_page_by_path('news') ));
pages/test.scout.php
// Search page Route::is('search', function(){ return View::make('search', array('search' => $_GET['s'])); });
controllers/Test_Controller.php
の「Hello World」がレンダリングされます。ただし、ThemosisはWordPressに依存しているため、システムにページを追加する必要があります。
Route::only('page', 'test', 'test@index');
「Hello World」メッセージは、リロード後にレンダリングします
/test
ページのコンテンツを含めるには、グローバル
およびビュー:
ページを正しくレンダリングします。$post
@include('header') Hello World @include('footer')
<?php class Test_Controller{ public function index(){ return View::make('pages.test'); } }
themosisは、WordPressプラグインの開発にLaravelのような体験を提供します。 WordPressのプラグインアーキテクチャに非常に必要な構造とカプセル化を導入します。
まだ初期段階(バージョン0.8)ですが、脅威は有望なプロジェクトです。 優れた設計慣行の採用はPHPコミュニティにとって重要であり、WordPressのコアの制限の範囲内であっても、Themosisは貴重な貢献を提供します。
以上がまず、WordPress開発者のフレームワークであるThemosisを見てくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。