slabphp/bundle-stack 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

slabphp/bundle-stack

Composer 安装命令:

composer require slabphp/bundle-stack

包简介

SlabPHP Bundle Stack Management Library

README 文档

README

This library maintains a stack of SlabPHP bundles and allows a form of polymorphism within the framework while also managing what SlabPHP calls cascading file resource directories.

Please see the main SlabPHP documentation for more information about SlabPHP and the reason why these libraries exist.

Installation

Use composer to include the package

composer require slabphp/bundle-stack

Usage

Initialization

Make sure your SlabPHP bundle configuration object exists. SlabPHP has one built-in for it's default Bundle. That's the one you should use as the first one but of course it's not required if you're for some reason using this library not within a SlabPHP context.

$stack = new \Slab\Bundle\Stack();

Then you can push bundle configuration objects for any other bundle you've created.

$stack
    ->pushBundle(new \SlabPHP\Configuration())
    ->pushBundle(new \My\Shared\Namespace\Configuration())
    ->pushBundle(new \My\Site\Configuration());

SlabPHP offers the ability to push your final bundle configuration by using dynamic means, such as a server_name. This logic is not handled in this library.

Finding a Class

You can now use your bundle stack to locate appropriate classes. For example, if you have a second-tier shared bundle, you could make it query the bundle stack using the findClass or findClassName methods.

For example, lets assume your bundle stack looks like the following:

  • Slab - default bottom bundle
  • Shared - your shared bundle
  • Example - your example.com site bundle

You have already created Bundle configuration objects for them and build a $this->stack object.

To continue with this example, assume you have a \Shared\Controllers\Article class. Inside of this class you do the following:

$object = $this->stack->findClass('Utilities\Calendar');

The stack object will look for \Example\Utilities\Calendar first, if it exists, it will use it, otherwise it will check for \Shared\Utilities\Calendar, and finally it will check for \Slab\Utilities\Calendar before either returning a found class instance or null. Alternatively you can just use findClassName if you just want a string representation of the name. This functionality relies on the presence of a previously configured autoloader (hopefully psr4) to be present.

Cache

Everything gets stored in a local thread-only memory cache. This will optimize repeated look-ups within the same request but has to be rebuilt every request. If you find this is an issue, consider forking.

统计信息

  • 总下载量: 63
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2018-03-02

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固