basement/basement

php常用web组件通用化、解耦化

1.0.0 2019-01-16 08:12 UTC

This package is auto-updated.

Last update: 2024-03-16 19:57:41 UTC


README

Latest Stable Version Total Downloads PHP Version License

requires php>=7.2 and composer

介绍

Basement的目的是让web中常用的php组件功能可以通用化使用,并且可以实现程序解耦,是由一套trait和一个类Linker共同构成。

  • 这一套trait类似扩展了的接口,对最常用的组件功能进行了非常严格的规定。每一个trait对应一个组件,需要开发者按照该trait规定的方法和约束实现宿主类。在依靠php语法无法约束的场景,会有一定的文字约束甚至逻辑代码用于提醒实现者严格按照规定实现类。用trait的原因是对有些方法需要用一定的代码约束,同时php是单继承,因此要避免使用继承方式对实现类的影响,所以接口和抽象类都不能满足,而trait则成了最优选择。
  • Linker这个类定义在根命名空间,只有全静态的方法,是basement的核心所在。它用于注册和访问组件,注册的组件可以是上述trait名(也即标准组件),也可以是用户自定义的组件名。

目的

  • 精准抽象和简单访问。大部分web开发具有大量重复的地方,对这些地方进行抽象并提供一套最简单的访问模式。
  • 统一规则和屏蔽区别。相同的需求具有不同的实现,统一这些实现接口并将其特有的调用方式屏蔽掉,使其对开发者简单化、透明化。
  • 对组件的替换可以无缝进行。若某个组件出现问题,只需更改所注册的组件名即可。
  • 通用化组件。使不同的组件可以在不同的程序上面以相同的方式调用。

安装

  • 1.composer方式(推荐)
配置composer.json文件并执行 composer install
"require": {
    "basement/basement": "1.0.*@stable"
}
或命令行键入
composer require basement/basement 1.0
  • 2.源码方式
<?php
//下载源码后,在php文件中引入
require "boot.php";

使用

  • 使用Linker::register(['Config(组件名)'=>'some_config_class(具体类名)'])注册组件,即该方式注册了一个名为Config的组件,对应的类为some_config_class
  • 使用Linker::Config()获得some_config_class类名,或使用Linker::Config(true)获得some_config_class实例。即使用Linker类动态调用的静态方法皆为注册的组件名,形式为Linker::组件名()
  • 上述Config组件对应的类需实现trait Config的标准。

注意

调用注意
  • 找不到Linker类的错误,可手动加载boot.php文件。
  • 组件名不区分大小写。
实现注意
  • 所有函数接口返回的内容应该是独立的,不受环境或配置影响。
  • 所有方法除限定返回布尔变量的以外,失败或错误或无等情况都必须返回null,不能用false代替!

详细文档

核心(class)

标准组件(trait)

组件开发

在目标组件中使用上述对应trait,并实现其所规定要求。如下:

<?php

class MyConfig
{
	use \basement\Config;

    public static function get(string $name):  ? array
    {
    	... //具体代码
    }

    ... //Config组件要求的其他方法
}

开发标准组件完成后,除了Server系列组件外,都需通过basement的单元测试,拷贝basement-phpunit.xml文件到项目根目录,配置待测试的内容即可。 Server系列组件由于牵扯服务器数据交互,由开发者自行测试。

捐赠

捐赠林澜叶

版权信息