abmmhasan / di-container
1.00
2020-12-31 07:28 UTC
Requires
- php: >=7.0
This package is auto-updated.
Last update: 2024-04-26 05:45:00 UTC
README
此库动态解决构造函数和方法依赖(也适用于闭包)。以下是一些示例。
仓库已存档/弃用。
建议使用https://github.com/abmmhasan/OOF代替!
先决条件
语言:PHP 7.0/+
安装
composer require abmmhasan/di-container
使用方法
示例 01:带有额外参数
/** * A test class where we resolving dependency for * both constructor and defined method */ class TestClass { public function __construct(Sample1 $sample, $id) { return [$sample->all(),$id]; } public function getRequest(Sample2 $sample, $pid, $sid) { return [$sample->all(),$pid,$sid]; } } /** * Pass the class as first parameter * In second parameter pass the value as comma separated which will be * resolved to class __construct */ $class = new Container(TestClass::class,23); // TestClass: Class we resolving, 23: $id param // or, $class = initiate(TestClass::class,23); /** * Afterwards we call any methods of that class * 'getRequest()' is a method of 'TestClass' that we are calling. * Extra parameter can be sent as comma separated, which will be resolved to given method */ $value = $class->getRequest(34,43);
示例 02:无额外参数
/** * A test class where we resolving dependency for * both constructor and defined method */ class TestClass { public function __construct(Sample1 $sample) { return [$sample->all()]; } public function getRequest(Sample2 $sample) { return [$sample->all()]; } } /** * Only send parameter if required */ $class = new Container(TestClass::class); // TestClass: Class we resolving // or, $class = initiate(TestClass::class); /** * Same as above */ $value = $class->getRequest();
示例 03:闭包
$myClosure = function (Request $request, $test, $rest) { print_r($request); echo "I'm inside[$test,$rest]"; }; $class = new Container($myClosure, 23, 34); // Pass the closure // or, $class = initiate($myClosure, 23, 34);
示例 04:我不需要任何依赖解析
/** * From example 02 (same for 01 but not applicable for 03: Closure) */ $class = new Container(TestClass::class); // TestClass: Class we resolving // or, $class = initiate(TestClass::class); /** * Add this additional call before doing any method call */ $class->_noInject(); /** * Now do calls as usual */ $value = $class->getRequest();
支持
遇到问题?创建一个问题!