mindstorm38/php-sfw

此包已被 弃用 且不再维护。没有建议的替代包。
此包的最新版本(v1.2.0)没有可用的许可信息。

v1.2.0 2019-06-14 20:16 UTC

README

PHP-SFW 是一个面向对象的 PHP 框架。它提供了大量工具用于强大的数据库管理。自 1.1.0 版本起,支持路由、默认页面、原型访问等!

此 README 适用于版本 v1.2.0

摘要

  1. 安装 SFW
  2. 默认工作目录
  3. 理解资源处理
  4. 路由
  5. 页面 & 模板
  6. 配置
  7. 语言
  8. 数据库
  9. 原型网站

1) 安装 SFW

此框架只能使用 composer PHP 包管理器,更多关于 composer 的信息请查看 这里

一旦你学会了 composer 的基础知识,请使用 composer require mindstorm38/php-sfw ^1.1.0 安装 PHP-SFW 包。

然后,你可以通过在你的 composer 配置中添加一个名为 - 例如 - sfw-website-init 的脚本并执行 PHP 方法 SFW\Composer::composer_init_wd 来初始化默认网站 document root(在此文档中也称为 '工作目录')。如果你不知道如何操作,请查看 这里。脚本条目必须 - 使用之前选定的名称 - (在 'scripts' 对象中)"sfw-website-init" : "SFW\\Composer::composer_init_wd"

使用 composer run-script sfw-website-init 运行安装程序,它是交互式的。仅提供信息,请求的 "应用程序路径" 是 Apache 的 document root(或 NGINX)。

2) 默认工作目录

默认工作目录包含以下内容:

  • langs:由 Lang 模块使用的语言文件。
  • src/lib:项目中的所有 PHP 类,你必须在 composer.json 中添加一个 PSR-4(或其他类型的 SPL 类加载)部分指向它。
  • src/pages/:网站的所有页面。
  • src/templates/:网站的所有基本模板。
  • .htaccess:Apache 的配置文件,对于 NGINX 不有效,但 NGINX 开发者的贡献会受到欢迎。
  • common.php:该文件在每个客户端请求时加载 composer 自动加载器并启动应用程序(如果使用默认 '路由' 系统)。

生成的 common.php 使用交互式安装程序提供的信息进行了预配置。你现在可以注册所有需要的路由和页面/模板。

默认情况下,此文件通过初始化所有目录和 ResourceHandlers 来启动应用程序,在此方法之后,你可以注册所有自定义页面和路由。

框架的主要命名空间是 SFW\

3) 理解资源处理

理解 资源资源目录 的概念对于理解其余文档非常重要。

核心类有一个 ResourceHandler 列表,一个处理器包含一个 基本目录,并有两个方法来获取相对基本目录的目录和文件的相对路径(如果它们存在的话)。

默认情况下,有一个资源处理器指向您的应用程序的基本目录(在 'start_application' 参数中给出),还有一个指向 vendor 下的 mindstorm38/php-sfw 包目录。这允许 SFW 创建默认页面、模板和静态资源。

最后添加的资源处理器具有优先级,并且根据使用的方法,会覆盖 SFW 源代码。

4) 路由

在大多数 Web 框架中,有一个 route 的概念,路由用于根据请求的 URL 路径执行 controller

有两种类型的路由,普通路由和过滤器路由。如果普通路由被验证,则所有过滤器路由将按注册顺序进行测试,并且可以知道已验证了哪种类型的普通路由,它们可以停止操作并执行另一个普通控制器,或者什么都不做。

要添加路由,请使用 Core::add_route。为了优化最大,创建自己的路由扩展 RouteFilterRoute 类。

• ExactRoute

ExactRoute 仅检查在实例化时给定的路径是否与请求路径相对应。

默认情况下,具有空路径 /ExactRoute 路由到默认主页。

• TemplateRoute

TemplateRoute 用于创建具有空白值以传递参数到路由回调的路径。

空白模式定义为 {<type>[idx]},其中 type 定义了接受的字符类别,idx 是回调变量数组中解析变量的索引。

模式类型

  • a:用于字母和数字
  • n:用于数字
  • z:仅用于字母

如果没有指定索引,则索引等于最后一个模式索引 + 1。

对于每个路径目录,您可以使用一个字符串在它之前和之后使用一个模式。例如,dir/test{n0}/{n} 是有效的,但 dir/ok/{a0}test{n1} 是无效的。

• StaticRoute

StaticRoute 用于访问资源。例如,如果基本路径是 static,并且请求了 static/styles/foo.css,则回调函数给定的变量数组包含路径 styles/foo.css

默认情况下,添加了一个具有基本路径 staticStaticRoute(对于默认 SFW 页面来说是必须的)。

• QueryRoute

QueryRoute 仅避免使用 <base_dir>/{a}TemplateRoute

默认情况下,创建了一个具有基本目录 query 的查询路由。

5) 页面和模板

页面和模板存储在资源处理器基础路径下的 src/pagessrc/templates 中。将它们的文件放置在其标识符命名的目录中。

模板可以用作多个页面的基础,并使用 Core::set_page_template 方法定义。

在页面和模板脚本中,变量 $page 被定义为 Page 实例,并可用于 require 模板或页面部分。

默认情况下,SFW 提供了一个模板 sfw 以及两个与它们关联的页面 errorhome

6) 配置

SFW 网站的配置存储在应用程序根目录下的 config.json 中。它使用 Config 类和 Config::get 方法来获取值(在文档化的代码中了解更多信息)。

7) 语言

语言使用 Lang 类,并存储在每个资源处理器下的 langs 目录中。每种语言由一个遵循 <lang>_<contry>.lang 模式的文件定义。语言文件是语言 entry 的集合,一个条目必须遵循 <name>=<text> 模式,并以 # 开头的行不考虑。

只有 langs.json 文件中定义的语言才会被计算和注册,请查看 SFW 源代码以了解此文件。

如果同时在应用程序和 SFW 资源处理器中定义了语言,则不会覆盖语言,而是合并。

8) 数据库

数据库管理是SFW的主要实用工具之一。目前,只能连接到一个 MySQL 数据库。数据库连接的配置可以在 config.json 中进行。

您可以使用以下类来管理您的表

  • Database : 用于准备请求、获取数据等的主要类(更多详细信息请参阅文档代码)。
  • UIDBaseClass : 一个抽象类,如果您在 table class 中有 uid 字段,则应在类中实现(参见之前)。
  • UIDLazyInstance : 一个懒加载值,用于从一个存储在另一个表类中的 uid 获取或设置实现 UIDBaseClass 的另一个对象。

建议使用类获取系统,为此您需要创建 table class,其中所有必要的表列都通过具有相同名称的属性表示。为了管理这一点,您可以创建静态类(例如命名为 'Manager'),在其中放置所有需要的SQL请求方法。

在早期版本中,无法轻松创建自己的SQL查询。必须使用类 SQLManager SQLSerializableTableDefinitionTableManager

现在这些类已被弃用。

9) 原型网站

框架配置允许您通过限制其访问来将您的站点设置为原型,使用配置值 prototype:enabled

如果您启用原型,则访问凭证将用于访问整个站点,这些凭证在 prototype:users 配置部分中指定。在此部分中,键是用户名,值是密码,密码可以留空,否则密码必须以SHA-256编码。