arsengoian/viper-framework

一个轻量级的多用途PHP MVC框架

1.2.2 2022-05-30 16:46 UTC

This package is auto-updated.

Last update: 2024-09-28 09:19:42 UTC


README

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

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

composer create-project arsengoian/viper PROJECT_NAME dev-master

并配置数据库凭证。

要查看由该命令(或贡献)部署的应用程序构建,请查看:https://github.com/arsengoian/viper

配置

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

可以通过Config类在任何时候访问设置

if (Config::get('DEBUG'))     // From local.yaml -> local.yaml and global.yaml don't need a preffix
    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 Server
  • 支持其他SQL方言
  • 众多功能和结构改进

贡献和发展

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

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