yuBlank/phackp

pHackp旨在提供一种快速、简单的方式来构建现代、响应式的网站和应用。它为组织项目提供了一个模型-视图-控制器结构,并尽可能实现“约定优于配置”。

0.5.1-alpha 2018-04-02 17:22 UTC

This package is not auto-updated.

Last update: 2024-09-15 23:32:43 UTC


README

Build Status Codacy Badge

phackp

PHP 微型框架,诞生于PHP7时代!

免责声明

pHackp实际上处于alpha阶段。框架可能在某些方式上发生变化,使得alpha/beta版本在未来可能无法与第一个稳定版本兼容。实际上,框架与PHP7+兼容。

准备好了吗?

https://github.com/yuxblank/phackp/wiki/Get-started

简介

pHackp旨在提供一种快速、简单的方式来构建现代、响应式的网站和应用。它为组织项目提供了一个模型-视图-控制器结构,并尽可能实现“约定优于配置”。该框架提供所有基本功能,用于开发RESTful API、网站和Web应用。

要求

实际上,该框架正在经历快速开发。它已经与Apache(需要.htaccess mod_rewrite模块)和内置的PHP 7服务器(由root执行的URL重写)进行了测试。

功能和路线图

* 标记的功能处于开发或分析中

主要功能

  • 小体积
  • 多态性
  • 完全面向对象
  • 易于使用且直观
  • 无需任何依赖
  • PHP 7+
  • 易于扩展(Service Providers等)*
  • 几乎无需配置(没有yaml、xml、ini.. 只有PHP)
  • 卓越的性能、易用性和开发速度!
  • 通过容器(PHP-DI)实现依赖注入
  • PSR-4、PSR-7*、PSR-11兼容

PSR-7已扩展,因为pHackp ServerRequestInterface支持RESTful路由的路径参数。

路由

  • 路由通过PHP代码实现,无需生成或要求服务器配置规则(只需mod_require到index.php)
  • 数组映射路由
  • 动作通过类和方法名称映射给给定的URL
  • 排除未映射的路由(返回可配置的错误路由)
  • 100%美观的URL(例如 ...blog/title/1)
  • 参数绑定到简单的标签{tag}(例如 tag/{tag}/)
  • REST方法映射(GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH)
  • 丰富的RESTful功能(例如自动json解码/编码)
  • GET参数注入映射到给定的标签名称{name}($serverRequest->getQueryParams()['name'])

持久化

  • 基于PDO的对象-关系映射引擎(HackORM)
  • 直观的API
  • 自动模型映射(基于约定)
  • 对象之间的OneToOne、ManyToOne、ManyToMany关系
  • 行为父实现(例如 $object->save()。)
  • 依赖注入(例如 self::oneToMany($this, 'Parent::class') 返回 $Parent 实例。)
  • 能够将数据库类作为独立类使用,以保留“是”OOP规则。但Model API更高效!
  • 当需要时,模型可以始终访问PDO实例($this->getPDO())
  • Doctrine2集成

模型-视图-控制器

  • 应用程序生命周期将当前请求路由到指定的控制器方法,包括错误或404。
  • 控制器利用DI,因此您可以自由注入所需的内容(视图、会话、模型、请求)
  • 内置的模板系统支持模板继承。(纯PHP!)
  • 一切都关于约定!

表示层

  • 内置视图引擎
  • 纯PHP语法
  • 模板继承
  • 动态钩子支持
  • 可配置的钩子具有范围隔离(或传递)

服务和提供者

  • 动态注册提供者实例(非单例,单运行时实例豆类)
  • 基于反射调用接口方法,允许在运行时委派实现类(例如:错误处理器)
  • 简单有效的API,用于扩展和实现全新的提供者或委托者
  • 支持急速和懒加载的提供者实例化
  • 可配置、可扩展,并与框架容器完全集成
  • 可直接使用的Service Providers
  • 错误处理器(提供PHP错误和异常处理的覆盖)

PSR-4

  • 使用Composer默认的PSR-4自动加载
  • 自动映射项目类

PSR-7

  • 创建ServerRequest接口并将其设置到DI容器中
  • 控制器方法使用DI通过类型注入(自动装配)获取当前请求

PSR-11(草案)

  • 我们使用PHP-DI作为参考实现
  • 框架依赖项工厂由pHackp运行时管理

RESTful

  • 简单、直接创建REST API
  • 支持GET、POST、PUT、DELETE、OPTIONS、PATCH等路由,用于CRUD RESTful标准API
  • 自动序列化和反序列化json到数组(PSR-7中间件)
  • 可直接使用的CORS过滤器*

支持第三方项目