chemaclass/knob-base

此包已被废弃,不再维护。未建议替代包。

Knob MVC PHP 框架的项目基础

1.1.5.2 2017-03-19 15:00 UTC

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 CodexWP 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 模板

从 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...
}
  • 您将获得库来准备您的 ActionsFilters(来自 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