
批改狀態(tài):合格
老師批語:設(shè)計模式, 就是編程套路, 為什么要這么做呢? 其實有更簡單直接的實現(xiàn)方案不是嗎? 原因就是為了代碼復(fù)用和維護方便, 為了實現(xiàn)這個目標(biāo), 程序員還是蠻拼的
<?php
require 'model.php';
require 'view.php';
//創(chuàng)建服務(wù)容器
class container
{
//公共對象容器 ,對象內(nèi)容,默認(rèn)空數(shù)組(公共)
protected $instances = [];
//方法一:綁定(進入)
// bind(對象,創(chuàng)建過程) 。bind(Model,new model)
public function bind($alias/*對象別名*/, \Closure $pracess/*實例化過程*/)
{
$this->instances[$alias] = $pracess;
}
//方法二:取出
public function make($alias, $params = [])
{
// call_user_func_array — 調(diào)用回調(diào)函數(shù),并把一個數(shù)組參數(shù)作為回調(diào)函數(shù)的參數(shù)
return call_user_func_array($this->instances[$alias], []);
}
}
//創(chuàng)建容器實例
$container = new container;
//綁定
$container->bind('Model', function () {
return new Model;
});
$container->bind('View', function () {
return new View;
});
class controller3
{
public function index(container $container)
{
// 取出數(shù)據(jù)
$data = $container->make('Model')->getData();
// 渲染視圖
return $container->make('View')->fetch($data);
}
}
$controller = new controller3;
echo $controller->index($container);
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號