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

PHP项目的最小框架

1.1.6 2019-03-18 17:59 UTC

This package is not auto-updated.

Last update: 2024-09-24 20:41:40 UTC


README

PHP微框架

这是一个专为REST API和简单网站设计的轻量级框架。它非常轻量,具有浅堆栈跟踪,这意味着应用程序运行速度快,应用程序错误易于追踪。

如何通过composer添加到项目中

要将此微框架添加到项目中,您应该在composer.json的'require'部分中添加它,如下所示

"require": {
	"willv/project": "^1.0.0"
}

如何使用

示例应用程序

可以使用示例应用程序快速启动;只需复制并适应您的需求

目录结构

Web根目录应为'www',所有PHP请求都应路由到www/index.php(www目录中的其他内容应为静态资源;此微框架不涉及处理它们)。所有'project'文件和目录都应与'www'目录处于同一级别(即Web根目录之上)

引导器

微框架包含一个名为App的引导器对象,可用于轻松设置项目。您应该在名为,例如"global.php"的文件中实例化它,然后在每个需要使用框架的脚本中require它;通常,HTTP请求的主要前端控制器以及任何需要环境的shell脚本。

命名空间

您需要为您的应用程序发明一个命名空间,以便自动加载器正常工作;有关更多详细信息,请参阅示例应用程序

构造函数

此框架中所有类的'new'关键字都被禁用;取而代之的是,有一个名为'create'的工厂方法,应静态调用(例如User::create())。这是因为静态方法语法允许在实例化对象的同时在同一行调用方法,从而支持更多版本的PHP。

抽象类

'project'中的许多类都是抽象类,这意味着您不能直接实例化它们。相反,您应该用与您的应用程序相关的版本扩展该类,并使用它。例如,如果您正在编写一个博客应用程序,您可能有一些名为User、Post和Comment的域对象。这些类都应该扩展基础DomainObject类。

setUp方法

'project'中的许多抽象类都有setUp方法,您应该在此处进行配置(例如定义数据集的字段)。有关更多详细信息,请参阅示例应用程序

核心概念

域对象

域对象表示应用程序使用的实体(例如,博客文章或用户)。每个域对象都与一种数据集类型相关联,这意味着提交给其各种属性的提交数据有一套验证规则;如果您破坏了它们,将抛出异常。

例如,如果您有一个名为User的域对象,您可能会将其与包含字段"名称"和"年龄"的UserDataset数据集相关联

$alice = User::create(array("name" => "Alice", "age" => "54"))
$alice->set("age", "55")

在上述两行中,将验证整个数据集。

数据集

数据集以两种方式使用

* To validate data submitted by a user
* To validate data associated with a domain object

要创建新的数据集类型,扩展\WillV\Project\Dataset类;然后您可以

* Instantiate this dataset and call its isValid method to check if a set of data is valid
* Associate the class with a domain object, and it will be used to validate data submitted when creating or changing the domain object

要将数据集与域对象相关联,在相关域对象的setUp方法中配置它,如下所示

class Task extends DomainObject {
	protected function setUp() {
		$this->dataSetName = "\ProjectExampleApp\Datasets\TaskDataset";
	}
}

数据映射器

数据映射器用于保存域对象。

目前,只有一种数据映射器类型;MySQLMapper,用于将对象保存到MySQL数据库中;尽管可以添加更多(下一个列表中是MongoMapper,它应该是一个即插即用的替代品,用于将它们保存到MongoDB中)。

DataMappers假设数据库模式包含“id”、“created_utc”(创建日期)和“updated_utc”(更新日期)字段,因此您应确保您的数据库模式包含这些字段,否则将出现错误。

控制器

控制器是简单的PHP脚本,应放置在名为“controllers”的目录中。虽然它们是简单的脚本,但它们可以从具有各种信息访问权限的上下文中包含,例如从数组‘$this->urlParams’中可用的URL参数。它们应直接‘echo’输出,然后可以自由‘exit’。

路由

应通过扩展Router类来进行路由。在Router的setUp方法中,您可以定义大多数常见HTTP方法的路由;参数应包含在花括号中,并将作为索引数组中的值在控制器中可用$ this->urlParams。当您添加路由时,有三个参数;模式、控制器名称和响应类型;后者默认为text/html。请参阅示例应用程序以获取更多信息。

404和500错误

如果您创建了名为404.php和500.php的控制器,它们将被自动用于分别处理没有路由和未捕获的异常的情况。

环境

在'project'中存储环境对象的键值对,以及一个用于确定环境是否活跃的函数。

您的应用程序应扩展\WillV\Project\Environment类,配置环境,为每个环境提供所需字段的列表。然后,您可以实例化环境并将它们添加到环境列表中(见下文)。

在实例化环境时,您应提供一个键值对列表,以及一个用于确定新环境是否活跃的函数。一些键值对可以存储在JSON配置文件中,这具有将它们列在.gitignore中的优势,这样它们就不会出现在版本控制中;这些非常适合存储,例如,数据库和第三方API的访问凭证。

环境列表

您应使用EnvironmentList来存储可用的环境列表。getActiveEnvironment方法将通过依次调用每个环境的适当方法来查找活动环境,直到找到活动环境。