Laravel框架 之 IoC入门

本文的示例代码参考IoC01

目录

开始

composer require "laravel/framework:5.5.*"

Basic

vim basic.php
<?php

require __DIR__.'/vendor/autoload.php';

class Person
{
    public $name;
}

$container = new Illuminate\Container\Container();

$container->bind(Person::class);

$instance1 = $container->make(Person::class);
$instance1->name = "xiaowang";

$instance2 = $container->make(Person::class);
$instance2->name = "xiaoming";

echo $instance1->name."\n".$instance2->name;
  • 测试
php basic.php
xiaowang
xiaoming

Singleton

vim singleton.php
<?php

require __DIR__.'/vendor/autoload.php';

class Person
{
    public $name;
}

$container = new Illuminate\Container\Container();

$container->singleton(Person::class);

$instance1 = $container->make(Person::class);
$instance1->name = "xiaoming";

$instance2 = $container->make(Person::class);
$instance2->name = "xiaowang";

echo $instance1->name."\n".$instance2->name;
  • 测试
php singleton.php
xiaowang
xiaowang

Interface

vim interface.php
<?php

require __DIR__.'/vendor/autoload.php';

interface DBManager
{
    public function name();
}

class JPAManager implements DBManager {
    public function name()
    {
        return "JPA";
    }
}

class MybatisManager implements DBManager {
    public function name()
    {
        return "Mybatis";
    }
}

$container = new Illuminate\Container\Container();

$container->singleton(DBManager::class, function () {
    return new JPAManager();
});
$instance = $container->make(DBManager::class);
echo $instance->name()."\n";

$container->singleton(DBManager::class, function () {
    return new MybatisManager();
});
$instance = $container->make(DBManager::class);
echo $instance->name()."\n";
  • 测试
php interface.php
JPA
Mybatis

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,088评论 19 139
  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 8,262评论 0 12
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,192评论 25 709
  • 其实我也知道,太阳虽然天天东升西落,可是我们却难免会看不到光,感受不到热。记得张爱玲说:爱是光,被爱是热。其实年少...
    A戎马书生阅读 3,456评论 0 0
  • 六岁的女儿在梦里一口气能背完≪论语≫四章,你相信吗?或许你会说太累了吧,其实我问过孩子,她说没觉得啊,早晨五点半就...
    山水青清阅读 2,713评论 0 0

友情链接更多精彩内容