PHPackages                             basement/basement - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. basement/basement

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

basement/basement
=================

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

1.0.0(7y ago)25312MITPHPPHP ^7.2.0

Since Jan 16Pushed 7y ago2 watchersCompare

[ Source](https://github.com/linlanye/basement)[ Packagist](https://packagist.org/packages/basement/basement)[ Docs](https://github.com/linlanye/basement)[ RSS](/packages/basement-basement/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (3)Used By (2)

Basement/1.0
============

[](#basement10)

[![Latest Stable Version](https://camo.githubusercontent.com/e957b28ee2a292ccafa2a4c1e41f6b530869ef5e05d03c55b1a09f6e212c9e1c/68747470733a2f2f706f7365722e707567782e6f72672f626173656d656e742f626173656d656e742f762f737461626c65)](https://packagist.org/packages/basement/basement)[![Total Downloads](https://camo.githubusercontent.com/a5f6f31c794cb2ef59baee9d6c2317ca496620e1dfae08de5937ef2e08b29740/68747470733a2f2f706f7365722e707567782e6f72672f626173656d656e742f626173656d656e742f646f776e6c6f616473)](https://packagist.org/packages/basement/basement)[![PHP Version](https://camo.githubusercontent.com/facf49f38d3f6bf192c14ce71a5e2479a4641044e627d4b7a27e4298a3002704/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344372e322d3838393242462e737667)](http://www.php.net/)[![License](https://camo.githubusercontent.com/a8acaca7b6164b76cc28b82dc6d0304f3f143b89e6afab34e2ed2f43369c8d0b/68747470733a2f2f706f7365722e707567782e6f72672f626173656d656e742f626173656d656e742f6c6963656e7365)](https://packagist.org/packages/basement/basement)

> 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.源码方式

```
