该软件包最新版本(2.1.0)没有可用的许可证信息。

wenprise mvc 框架。

2.1.0 2023-12-14 02:35 UTC

README

基于 Themosis 框架,将 MVC 框架添加到 WordPress 中。

用法

先决条件

  1. 在“永久链接设置”中将永久链接结构设置为 /%postname%/
  2. 在“阅读设置”中将“您的首页显示”设置为 您的最新文章

使用 composer 安装

在您的主题目录中

$ composer require wenprise/mvc

将 psr-4 自动加载规则添加到 composer.json 中

"autoload": {
    "psr-4": {
      "Theme\\": "app/"
    }
},

运行 dump-autoload 命令

$ composer dump-autoload

将自动加载和框架初始化文件包含到您的主题的 functions.php 文件中。

require_once( get_theme_file_path( 'vendor/autoload.php' ) );
require_once( get_theme_file_path( 'app/init.php' ) );

目录结构

主题/app 目录的结构。

├── Controllers
│   ├── AccountController.php
├── Models
│   ├── Order.php
├── Providers
│   └── RoutingService.php
├── init.php
└── routes.php

在主题中启动框架

init.php 中的代码

namespace Theme;

use Theme\Providers\RoutingService;
use Wenprise\Mvc\App;

class Init
{

    public function __construct()
    {
        $GLOBALS[ 'wenprise' ] = App::instance();

        /*
         * 获取服务容器
         */
        $container = $GLOBALS[ 'wenprise' ]->container;

        /*
         * 注册主题视图路径
         */
        $container[ 'view.finder' ]->addLocation(get_theme_file_path('templates'));


        /*
         * 加载配置文件
         */
        $container[ 'config.finder' ]->addPaths([
            get_theme_file_path('app/Config/'),
        ]);

        /**
         * 主题服务提供者
         */
        $providers = [
            RoutingService::class,
        ];

        foreach ($providers as $provider) {
            $container->register($provider);
        }
    }

}

路由服务

RoutingService.php 中的代码

namespace Theme\Providers;

use Wenprise\Facades\Route;
use Wenprise\Foundation\ServiceProvider;

class RoutingService extends ServiceProvider {
	public function register() {
		Route::group( [
			'namespace' => 'Theme\Controllers',
		], function () {
			require get_theme_file_path( 'app/routes.php' );
		} );
	}
}

路由器

routes.php 中的代码

Route::prefix( 'account' )->group( function () {
	Route::match( [ 'get', 'post' ], 'register', 'AccountController@register' );
} );

控制器

示例控制器

namespace Theme\Controllers;

use Wenprise\Route\BaseController;

class AccountController extends BaseController {

	/**
	 * User register controller
	 * @return string
	 */
	public function register() {
	
	}
	
}

模型

参见:Wenprise Eloquent

视图

参见 https://laravel.net.cn/docs/5.5/bladehttps://twig.symfony.com.cn/