arsengoian/viper

Viper 的部署包 - 一个简单易用的多功能 PHP MVC 框架

0.2 2018-02-20 12:29 UTC

This package is auto-updated.

Last update: 2024-09-19 15:07:17 UTC


README

Viper 是一个轻量级的通用 PHP MVC 框架,具有自己的模型和模板引擎

开始使用 Viper 进行开发就像在控制台中输入一样简单

composer create-project arsengoian/viper PROJECT_NAME dev-master

并配置数据库凭据

配置

Web 应用程序由位于 config/ 目录的 YAML 文件数组配置。它们包含每个设置的指令列表。local.yaml 包含与当前服务器环境相关的配置,而 global.config 设置整体应用程序设置。

可以使用 Config 类随时访问设置

if (Config::get('DEBUG'))     // From local.yaml -> local.yaml and global.yaml don't need a prefix
    return Config::get('Bots.VERIFY_TOKEN')    // From bots.yaml

特性

YAML 路由

请求会自动路由,例如对 http://website.com/chairs 的 GET 请求将调用 ChairsControllerget 方法

路由示例

welcome: DefaultController         # directs DOMAIN/welcome -> DefaultController::get($http_params)
hello: DefaultController.main      # directs DOMAIN/hello   -> DefaultController::main($http_params)
products:                          # 1-level hierarchies are also supported
    parse: DefaultController
    count: DefaultController.main

易于使用的控制器和内置验证

实现 POST 请求的控制器函数

public function post (...$args): ?Viewable
{
    $v = new Required($this -> params());                                 // Create validator
    $v -> email('email');                                                 // Validate "email" field

    Client::registerWithImages($this -> params(), $this -> files());      // Create new model in the database
    return new RedirectView('/');                                         // Redirect to main page
}

自动完成模型

Viper 自动处理数据库,最大限度地减少手动编辑 SQL 的需要。如下 YAML 设置

 allowOverwrite: true

 fields:
  fname: VARCHAR(255) NOT NULL
  lname: VARCHAR(255) NOT NULL
  email: VARCHAR(255) NOT NULL
  age: INT NOT NULL
  img: TEXT NOT NULL

将在需要时创建所需的数据库结构,并在需要时与文件一起更新。

过滤器

将在任何控制器动作之前应用于所有路由

class Application extends \Viper\Core\Application
{
    /**
     * Defines the list of filters to be run
     * before any controller actions
     * @return FilterCollection
     */
    protected function declareFilters (): FilterCollection
    {
        return new FilterCollection([
            LocalizationFilter::class,
            Authorization::class
        ]);
    }
}

日志和实用工具

Viper 支持内置日志和一系列有用的实用工具,包括缓存、高级字符串处理等。

缓存能力

所有视图和解析的 .yaml 文件如果可能,都将从缓存中恢复

早期开发特性

  • 后台进程和服务
  • Windows 后台任务
  • Viper 模板引擎
  • 控制台命令
  • 完整的 Mysql 支持
  • 其他 SQL 语句支持
  • 许多特性和结构改进

贡献和开发

由于框架处于早期开发阶段,它可能具有结构不可逆的更改,而不具备向后兼容性。

如果您也对使 PHP 开发更加优雅和直观感到热情,请为该项目做出贡献 =)