chemaclass / knob-base
此包已被废弃,不再维护。未建议替代包。
Knob MVC PHP 框架的项目基础
1.1.5.2
2017-03-19 15:00 UTC
Requires
- php: >=5.6
- phpmailer/phpmailer: 5.2.*
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2019-11-14 01:17:31 UTC
README
这个仓库是做什么的?
- Knob-base: 使用 Knob MVC PHP 框架的项目基础
- 这是一个 PHP MVC 框架,可以比以往任何时候都更容易、更有趣地创建 WordPress 模板。
- 作者:José María Valera Reales
Knob-base 是 Knob-mvc 的内核
- 这是一个基于 MVC 模式的框架。
- Knob-base 不应关注页面任何样式,而是处理 WP 并提供模型。
- 灵感来源于当今最新的 Web 开发框架,如 Symfony 或 Laravel。
- 关于 WP 内核的任何问题:请查看官方 WP 文档:WP Codex 和 WP Reference。
创建基本的控制器和视图
HomeController
: WP 所有文件的控制器- author.php
->getAuthor()
:渲染base/author.mustache
模板 - archive.php
->getArchive()
:渲染base/search.mustache
模板 - category.php
->getCategory()
:渲染base/search.mustache
模板 - home.php
->getHome()
:渲染base/home.mustache
模板 - search.php
->getSearch()
:渲染base/search.mustache
模板 - single.php
->getSingle($type = 'post')
:渲染base/[post|page].mustache
模板 - tag.php
->getTag()
:渲染base/search.mustache
模板 - 404.php
->get404()
:渲染base/error_404.mustache
模板
- author.php
从 WordPress 模板页面调用控制器。
为 WordPress 创建模板,例如单篇文章加载时使用的 single.php。
use Controllers\HomeController; $controller = new HomeController(); $controller->getSingle('post');
模型以从您的数据库中获取所有值
- 您可以在 'Knob\Models'(src/models/ 目录)中找到所有作为实体的模型,这些模型来自您的数据库。例如
Post
// vendor/chemaclass/knob-base/src/models/Post.php namespace Knob\Models; class Post extends ModelBase { public static $table = "posts"; public function getSlug() { return $this->post_name; } public function getAuthor() { return User::find($this->post_author); } // more sentences... }
- 您将获得库来准备您的
Actions
和Filters
(来自 WordPress)。例如Actions
// vendor/chemaclass/knob-base/src/libs/Actions.php namespace Knob\Libs; class Actions { public static function setup() { static::adminPrintScripts(); static::adminPrintStyles(); static::loginView(); static::wpBeforeAdminBarRender(); } // rest of the implementation... }
- 您还可以创建自己的小工具作为新模型。您在
Knob\Widgets
(src/widgets/ 目录)中找到了基本元素。例如 PagesWidget
// vendor/chemaclass/knob-base/src/widgets/PagesWidget.php namespace Knob\Widgets; use Knob\Models\Post; class PagesWidget extends WidgetBase { public function widget($args, $instance) { $instance['pages'] = Post::getPages(); parent::widget($args, $instance); } }
- 所有这些都可以在
Knob\libs
(src/libs/ 目录)中以最好的、最简单的方式实现
基于 Mustache 模板的视图
- 基本上你只需要关心你的模板。这就是我们选择Mustache的原因。它简单、灵活且有趣。
控制器来整合一切
- 从
Knob\Controllers
(src/controllers/ 目录) - 你将得到一个
Knob\Controllers\BaseController
用于扩展你自己的控制器。
// app/controllers/BaseController.php namespace Controllers; use Knob\Controllers\BaseController as KnobBaseController; class BaseController extends KnobBaseController { // more sentences... }
- 然后你的
HomeController
可能看起来像这样
// app/controllers/HomeController.php namespace Controllers; use Knob\Controllers\HomeControllerInterface; use Models\Option; class HomeController extends BaseController implements HomeControllerInterface { /** * home.php */ public function getHome() { $args = [ 'posts' => Post::getAll(Option::get('posts_per_page')) ]; return $this->renderPage('base/home', $args); } // rest of the implementation... }
在开始之前...你需要!
安装ruby和compass
- sudo apt-get install ruby
- sudo gem update --system
- sudo apt-get install ruby1.9.1-dev
- sudo gem install compass
- sudo gem install rake
那么,你将能够在你的项目目录中编译scss文件
- /knob-mvc $> rake watch_scss
你需要一个PHP图形库来使用图像编辑器
- apt-get install php-imagick php7.0-gd
- service apache2 reload