php.basic.functions
2024-10-03 10:28:11
array_unshift
call_user_func_array闭包 下面是学院的代码
class Container
{
protected $binds; protected $instances; public function bind($abstract, $concrete)
{
if ($concrete instanceof Closure) {
$this->binds[$abstract] = $concrete;
} else {
$this->instances[$abstract] = $concrete;
}
} public function make($abstract, $parameters = [])
{
if (isset($this->instances[$abstract])) {
return $this->instances[$abstract];
} array_unshift($parameters, $this); return call_user_func_array($this->binds[$abstract], $parameters);
}
} // 创建一个容器(后面称作超级工厂)
$container = new Container; // 向该 超级工厂添加超人的生产脚本
$container->bind('superman', function($container, $moduleName) {
return new Superman($container->make($moduleName));
}); // 向该 超级工厂添加超能力模组的生产脚本
$container->bind('xpower', function($container) {
return new XPower;
}); // 同上
$container->bind('ultrabomb', function($container) {
return new UltraBomb;
}); // ****************** 华丽丽的分割线 **********************
// 开始启动生产
$superman_1 = $container->make('superman', 'xpower');
$superman_2 = $container->make('superman', 'ultrabomb');
$superman_3 = $container->make('superman', 'xpower');
// ...随意添加
最新文章
- window系统JDK1.7的快速配置
- 老猪带你玩转android自定义控件一——打造最简单viewpagerindicator
- 15款免费的响应式 WordPress 主题下载
- linux:nohup 不生成 nohup.out的方法
- 互斥对象 Mutex 和MFC中的CMutex
- Shell教程5-Shell运算符
- 开发流程习惯的养成—TFS简单使用
- Linux Add a Swap File
- Abp zero 3.0.1发布
- Mybatis入门1
- 逆向学习-Upack的PE文见头分析
- 修改Anaconda3中jupyter的工作目录
- 在微信小程序中,如何实现下拉刷新(模拟刷新)
- Span<;T>;和ValueTuple<;T>;性能是.Net Core非常关键的特性
- C# 多线程九之Timer类
- 【AtCoder】CODE FESTIVAL 2017 Final
- 【Java】K-means算法Java实现以及图像切割
- auto_ptr与shared_ptr ZZ
- 数据链路层 点对点协议 PPP
- 【CODEVS】2800 送外卖