浏览代码

Add Mailer Trait

Mark Scherer 9 年之前
父节点
当前提交
5c874df21e
共有 1 个文件被更改,包括 51 次插入0 次删除
  1. 51 0
      src/Mailer/MailerAwareTrait.php

+ 51 - 0
src/Mailer/MailerAwareTrait.php

@@ -0,0 +1,51 @@
+<?php
+/**
+ * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
+ * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link          http://cakephp.org CakePHP(tm) Project
+ * @since         3.1.0
+ * @license       http://www.opensource.org/licenses/mit-license.php MIT License
+ */
+namespace Tools\Mailer;
+
+use Cake\Core\App;
+use Cake\Mailer\Exception\MissingMailerException;
+
+/**
+ * Provides functionality for loading mailer classes
+ * onto properties of the host object.
+ *
+ * Example users of this trait are Cake\Controller\Controller and
+ * Cake\Console\Shell.
+ */
+trait MailerAwareTrait {
+
+    /**
+     * Returns a mailer instance.
+     *
+     * @param string $name Mailer's name.
+     * @param \Cake\Mailer\Email|null $email Email instance.
+     * @return \Cake\Mailer\Mailer
+     * @throws \Cake\Mailer\Exception\MissingMailerException if undefined mailer class.
+     */
+    public function getMailer($name, Email $email = null)
+    {
+        if ($email === null) {
+            $email = new Email();
+        }
+
+        $className = App::className($name, 'Mailer', 'Mailer');
+
+        if (empty($className)) {
+            throw new MissingMailerException(compact('name'));
+        }
+
+        return (new $className($email));
+    }
+}