themisos:一种现代的WordPress开发方法
>我对WordPress纠结的代码库的鄙视是众所周知的。我建议不要使用它,除非您在技术上熟练。但是,我的批评源于人们对改进的渴望,希望将出现出色的替代方案,并提供更合乎逻辑,更有效的发展过程。 在我看来,任何简化WordPress的尝试都是积极的一步。
>最近,一个名为Themosis的项目浮出水面,被称为“ WordPress开发人员的框架”。本文探讨了它的病,其用法,并检查了其示例项目 - 书店应用程序。
键突出显示:
>“框架”一词可能会误导PHP开发人员。 WordPress已经包含许多不必要的组件。框架通常遵守简约的原则和脱钩的组件,并构建了复杂的应用程序,而不是相反。
从传统意义上讲,
>
从本质上讲,Themosis是一种由MVC驱动的,启发的WordPress插件,用于构建其他插件。它包括其自己的路由器(Laravel风格的路线定义)和模板引擎(SCOUT),类似于Laravel和Phalcon,并增加了WordPress支持。 例如,模板循环:
>利用WordPress API进行数据检索,并且
类是专门为WordPress内容循环设计的。@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
安装Loop
> themissis安装涉及作曲家和WordPress命令行工具。 用作曲家自动创建一个Themosis项目,包括最新的WordPress版本;标准WordPress安装脚本最终确定了设置。 请参阅官方安装说明,或者首先对示例项目进行实验(下面详细介绍)。
>>示例项目:书店应用
>Themosis提供了一个书店应用程序示例。
测试书店应用
进行测试,您可以改进宅基地。注册一个新网站:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
请记住将bookstore.local
添加到主机的/etc/hosts
文件中(按照宅基地改进的说明)。
),然后访问git clone https://www.php.cn/link/7101e4daaff4511510bbd4e6a0862fb7 themosis_example
>的安装过程。 按照说明进行操作。 此设置允许实验没有风险 - 简单地重建VM以恢复任何更改。
http://bookstore.local:8000
虽然初始外观不是开创性的(任何WordPress网站都可以采用类似的配置),但两个关键观察值脱颖而出:
设置非常快速,直接。
书店的代码位于github上:
(themosis源代码 - 与其他框架相关)和(作曲家依赖关系)。
>代码包含现代实践(名称空间,类,综合文档)时,仍然存在较小的过时元素(例如,app
,关闭PHP标签)。
src
> Themosis代码分布在两个位置:路由和演示文稿位于主题中,而应用程序逻辑则位于插件文件夹中。vendor
<?php defined('DS') or die('No direct script access.');
MVC结构
尽管可以改进两个父文件夹的碎片,但MVC结构的定义很好。
文件夹(类似于Laravel)使用可比的语法。控制器与视图分开,并且控制器使用模型,将数据传递给视图。 routes
>的示例: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的搜索功能:
- 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
Route::only('page', 'test', 'test@index');
/test
>
要包括页面内容,我们需要访问全局
变量并将其传递给视图。 这突出了WordPress的全局变量依赖。
$post
@include('header') Hello World @include('footer')
<?php class Test_Controller{ public function index(){ return View::make('pages.test'); } }
>有些复杂,但呈现WordPress内容的强大包装器提供了结构和清晰度,改善了WordPress的刚性。
> Themosis为WordPress插件开发提供了类似Laravel的体验。 它将急需的结构和封装引入WordPress的插件体系结构。> >尽管仍处于早期阶段(0.8版),但它是一个有前途的项目。 采用良好的设计实践对PHP社区至关重要,即使在WordPress的核心局限性范围内,Themisos也提供了有价值的贡献。
> (由于长度约束而省略了常见问题部分,但可以轻松解释并与其他文本相似。)以上是首先查看Themosis,这是WordPress开发人员的框架的详细内容。更多信息请关注PHP中文网其他相关文章!