美文网首页
依赖注入实现邮件发布

依赖注入实现邮件发布

作者: kevin_cf | 来源:发表于2017-11-13 15:57 被阅读0次

依赖注入

1.目录树

/Di
/--comment.php
/--EmailSenderInterface.php
/--Gmail.php
/--index.php
/--Qmail.php

1.index.php
<?php
/**
 * 自动加载类
 */
namespace Di;

class Load
{
    public static function run()
    {
        spl_autoload_register([self::class, 'loadClass'], false, true);
    }

    public static function loadClass($className)
    {
        $prefix = __NAMESPACE__ . '\\';
        $prefixLength = strlen($prefix);

        $file = '';

        if (0 == strpos($className, $prefix)) {
            $file =  explode('\\', substr($className, $prefixLength));
            $file = implode(DIRECTORY_SEPARATOR, $file) . '.php';
        }

        $path = __DIR__ . DIRECTORY_SEPARATOR . $file;
        if (is_file($path)) {
            require_once $path;
        }
    }
}

$load = new Load();
$load::run();

$comment = new Comment(Gmail::getInstance());
// $comment = new Comment(Qmail::getInstance());

var_dump($comment->save());
2.comment.php
<?php
namespace Di;

class Comment
{
    public $mail;
    public function __construct(EmailSenderInterface $mail)
    {
        $this->mail = $mail;
    }

    public function save()
    {
       return $this->mail->sendMail();
    }

}

3.EmailSenderInterface.php
<?php
namespace Di;

interface EmailSenderInterface
{
    public function sendMail();
}
4.Gmail.php
<?php
namespace Di;

class Gmail implements EmailSenderInterface
{
    private static $gmail;

    public function sendMail()
    {
        return '124';
    }

    public static function getInstance()
    {
        if (!self::$gmail instanceof self)
        {
            self::$gmail = new self();
        }
        return self::$gmail;
    }

}
5.Qmail.php
<?php
namespace Di;

class Qmail implements EmailSenderInterface
{
    private static $qqmail;

    public function sendMail()
    {
        echo 'QQmail';
        return 'send QQmail';
    }

    public static function getInstance()
    {
        if (!self::$qqmail instanceof self)
        {
            self::$qqmail = new self();
        }
        return self::$qqmail;
    }

}

相关文章

  • 依赖注入实现邮件发布

    依赖注入 1.目录树 /Di/--comment.php/--EmailSenderInterface.php/-...

  • Spring之依赖注入

    六、依赖注入 目录:构造器注入、set注入、拓展注入实现、Bean的作用域依赖注入(Dependency Inje...

  • Dagger2 源码分析

    Dagger简单介绍 Dagger2涉及到依赖注入,有关依赖注入的请到理解依赖注入 通过注解方式实现依赖注入分为两...

  • 浅谈依赖注入

    依赖注入是什么? 依赖注入的作用是什么? 依赖注入的应用场景? 如何实现依赖注入? 对于一个后端程序员来说,依赖注...

  • 3、Nest.js 中的依赖注入与提供者

    什么是依赖注入? 依赖注入(Dependency Injection,简称DI) 是实现 控制反转(Inversi...

  • 依赖注入

    依赖注入(DI)在PHP中的实现 什么是依赖注入? IOC:英文全称:Inversion of Control,中...

  • # Dagger2 + MVP + DI 模块化学习笔记

    [TOC] 依赖注入 在软件工程领域,依赖注入(Dependency Injection)是用于实现控制反转(In...

  • Dagger学习笔记

    1.理解依赖注入 依赖注入(Dependency Injection,简称 DI) 是用于实现控制反转(Inver...

  • Dagger2使用

    一、什么是依赖注入 依赖注入(Dependency Injection,简称 DI) 是用于实现控制反转Inver...

  • Golang 反射实现依赖注入

    Golang 反射实现依赖注入 Coding/Golang #Golang #Golang/reflect 依赖注...

网友评论

      本文标题:依赖注入实现邮件发布

      本文链接:https://www.haomeiwen.com/subject/rpuzmxtx.html