本文的示例代码参考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