oktopost/skeleton
Composer 安装命令:
composer require oktopost/skeleton
包简介
Inversion of Control library
README 文档
README
Skeleton
Skeleton is an Inversion of Control (IoC) Library for PHP 7.1.
Installation
composer require oktopost/skeleton
or inside composer.json
"require": { "oktopost/skeleton": "^1.0" }
Basic Usage Example:
// src/Proj/Base/IUserDAO.php interface IUserDAO { public function load($id); } // src/Proj/DAO/UserDAO.php class UserDAO implements IUserDAO { public function load($id) { // ... } } // skeleton-config.php $skeleton = new \Skeleton\Skeleton(); $skeleton->set(Proj\Base\IUserDAO::class, Proj\DAO\UserDAO::class); // or $skeleton->set("Using any string as key", Proj\DAO\UserDAO::class); // Obtaining a new instance using $service = $skeleton->get(Proj\DAO\IUserDAO::class); // or $service = $skeleton->get("Using any string as key");
In this case, $service will be set to a new instance of the UserDAO class that was created by Skeleton.
Autoloading class
Given the following setup:
// src/Proj/Base/IUserDAO.php interface IUserDAO {} // src/Proj/Base/IUserService.php interface IUserService {} // src/Proj/DAO/UserDAO.php class UserDAO implements IUserDAO {} // skeleton-config.php $skeleton = new \Skeleton\Skeleton(); $skeleton->set(Proj\Base\IUserDAO::class, Proj\DAO\UserDAO::class); $skeleton->set(Proj\Base\IUserService::class, Proj\Service\UserService::class);
Instance of UserService may be obtained without autoloading using:
// src/Proj/Service/UserService.php class UserService implements IUserService { public function setUserDAO(IUserDAO $dao) { } } $instance = $skeleton->get(IUserService::class); $instance->setUserDAO($skeleton->get(IUserDAO::class));
But with autoloading you can omit the call to setUserDAO using one of the following.
Using setter methods autolaoding
// skeleton-config.php $skeleton->enableKnot(); // src/Proj/Service/UserService.php /** * @autoload */ class UserService implements IUserService { /** * @autoload * Method must start with the word "set", have only one parameter and the @autoload annotation. * Private and protected methods will be also autoloaded. */ public function setUserDAO(IUserDAO $dao) { } } // example.php $instance = $skeleton->get(IUserService::class);
Using data member autoloading.
// skeleton-config.php $skeleton->enableKnot(); // src/Proj/Service/UserService.php /** * @autoload */ class UserService implements IUserService { /** * @autoload * @var \Full\Path\To\IUserDAO * Important: Full path must be defined under the @var annotation. */ private $dao; } // example.php $instance = $skeleton->get(IUserService::class);
Using __construct autoloading.
In this case the autoload annotation is not required for the class name nor for the __construct method.
// skeleton-config.php $skeleton->enableKnot(); // src/Proj/Service/UserService.php class UserService implements IUserService { public function __construct(IUserDAO $dao) { } } // example.php $instance = $skeleton->get(IUserService::class);
oktopost/skeleton 适用场景与选型建议
oktopost/skeleton 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.03k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2016 年 03 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 oktopost/skeleton 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 oktopost/skeleton 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 4.03k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 10
- 依赖项目数: 12
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-03-30