dari88's diary

これから趣味にするプログラミング/PHP/javascript/kohana/CMS/web design/

kohanaのテスト7・・・Zend Frameworkでkohanaの機能を拡張する

 kohana はシンプルなだけに、アプリケーションに近い部分の機能は貧弱です。今日は高名な Zend Framework を kohana と合体させて Zend Mail を使ってみます。オートローディング機能を持つ CMS なら何でも合体して機能拡張できるみたいです。

 

準備作業

Zend のサイトから Zend Framework Minimal Package をダウンロードして解凍します。ダウンロードするにはユーザー登録する必要があります。
・ライブラリの詳細は Zend のリファレンスガイドを参考にしてください。
・解凍した library/Zend を kohana/application/vendor/Zend に配置します。
・kohana/application/bootstrap.php の最後に以下を追加します。

/**
* Enable Zend Framework autoloading
* Zend_Mail setting
*/
if ($path = Kohana::find_file('vendor', 'Zend/Loader'))
{
ini_set('include_path',
ini_get('include_path').PATH_SEPARATOR.dirname(dirname($path)));
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
}

 

コントローラ

・kohana/application/classes/controller/test7.php

<?php

defined('SYSPATH') OR die('No direct access allowed.');

class Controller_Test7 extends Controller {

    public function action_index() {

        $user = '日本一太郎';
        $to = 'ichitaro.nippon@world.com';

        $conf = Kohana::$config->load('test7')->mail1;
        foreach ($conf as $key => $value) {
            $$key = $value;
        }

        $date = Date::formatted_time();
        $link = 'http://kohna.site/kohana/?auth_key=abcdefg';

        $body = <<< EOT
$user

$body1
$link
$body2 $date

EOT;

        $Z_Mail = new Zend_Mail('localhost');
        $Z_Mail
                ->setBodyText($body)
                ->setFrom($from)
                ->addTo($to)
                ->setSubject($subject)
                ->send();

        $view = new View('test2');
        $view->content = "メールの送信テストです";
        $view->message = "メールを送信しました";
        $this->response->body($view);
    }

}

?>

 <説明>
・$to には自分のメールアドレスを書いて下さい。
・コンフィグファイルをロードしてプロパティ mail1 を配列として取り出しています。
・$$key = $value; の所で 連想配列のキーを名前とする変数を生成しています。以前からこの $$ を使ってみたかったんです・・・(^^;;;
・タイムスタンプには kohana Date を利用しています。
・Zend_Mail のインスタンスを作って、各メソッドを利用してメールを送ります。
・xampp に付属の Mercury メールサーバーが稼働している前提です。設定方法は4月3日の日記を参照して下さい。
・ビューにはテスト2のものを流用しています。

 

コンフィグレーション

・kohana/application/config/test7

<?php defined('SYSPATH') or die('No direct access allowed.');

$body1 = <<< EOT
ooサイトへようこそ!
ユーザー登録を完了するには下記のリンクをクリックして登録ページにお越しください。
EOT;

$body2 = <<< EOT
ooサイトをよろしくお願いします。
 ウエッブマスター 日本太郎
                                     
EOT;

return array
(
        'mail1' => array
        (
                'from'       => 'webmaster@gmail.com',
                'subject' => 'ユーザー登録のご案内',
                'body1'      => $body1,
                'body2'      => $body2,
        ),

);

 どうでしょう、メールは届きましたでしょうか?