phalcon とメールとテンプレートと

39
Phalcon とメールと テンプレートと

Upload: yuhshi

Post on 15-Apr-2017

4.226 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: Phalcon とメールとテンプレートと

Phalcon とメールとテンプレートと

Page 2: Phalcon とメールとテンプレートと

ゆーし (Yuhshi / 晴柳祐志)WEB系の SIer で働いてます。

PhalconPHP やってます。

2008年以来2度目の発表です。

Page 3: Phalcon とメールとテンプレートと

PhalconPHP でメール送信

このフレームワークは

メール送信機能は付属していません。

Page 4: Phalcon とメールとテンプレートと

PhalconPHP でメール送信

送信は Qdmail というライブラリに任せました。

本文の生成は PhalconPHP の

テンプレートエンジン Volt に頼ります。

Volt は自動的に PHP ファイルに変換されます。

Page 5: Phalcon とメールとテンプレートと

本文の生成の話(メール送信そのものはもう話しません!)

Page 6: Phalcon とメールとテンプレートと

$view = new View();// (ここで初期化)$view->name = $name; // テンプレートで使う変数

$view->setRenderLevel( \Phalcon\Mvc\View::LEVEL_ACTION_VIEW);$view->start();// テンプレートが views/mail/mail_template.volt にあるなら

$view->render('mail', 'mail_template');$view->finish();return $view->getContent(); // 本文が返ってくる

Page 7: Phalcon とメールとテンプレートと

$view = new View();画面表示用の View インスタンスを使い回して

メール送信 → 送信完了画面表示

としたら画面が真っ白になりました><

メール送信用にインスタンス生成が必須

Page 8: Phalcon とメールとテンプレートと

地獄の改行問題

Page 9: Phalcon とメールとテンプレートと

改行が増える

改行コードを CRLF にしていたら

改行が増えました。

メールサーバのせいなのかライブラリのせいなのか

は追求していませんが、

LF にしてから送信処理に渡すことで回避。

Page 10: Phalcon とメールとテンプレートと

改行が減る

Page 11: Phalcon とメールとテンプレートと

氏名:{{name}}住所:{{address}}↓

氏名:<?php echo $name; ?>住所:<?php echo $address; ?>↓

氏名:ぴよたろう住所:東京都港区

Volt

PHP

mail

Page 12: Phalcon とメールとテンプレートと
Page 13: Phalcon とメールとテンプレートと

?> の直後の改行は、PHP によって取り除かれます。

http://jp.php.net/manual/ja/tutorial.firstpage.php

Page 14: Phalcon とメールとテンプレートと

仕方ないので改行の出力を追加しよう

(´・ω・`)

Page 15: Phalcon とメールとテンプレートと

volt で改行文字を追加してみよう

{{“\n”}}

Page 16: Phalcon とメールとテンプレートと

氏名:{{name}}{{“\n”}}住所:{{address}}{{“\n”}} Volt

Page 17: Phalcon とメールとテンプレートと

氏名:{{name}}{{“\n”}}住所:{{address}}{{“\n”}}↓

氏名:<?php echo $name; ?><?php echo ‘\n’; ?>住所:<?php echo $address; ?><?php echo ‘\n’; ?>↓

氏名:ぴよたろう\n住所:東京都港区\n

Volt

PHP

mailそのまま><

Page 18: Phalcon とメールとテンプレートと

シングルクォートで囲ってくれるなんて

Volt さん、親切ですね><

Page 19: Phalcon とメールとテンプレートと

volt で改行文字を追加してみよう その2

{{PHP_EOL}}

Page 20: Phalcon とメールとテンプレートと

氏名:{{name}}{{PHP_EOL}}住所:{{address}}{{PHP_EOL}} Volt

Page 21: Phalcon とメールとテンプレートと

氏名:{{name}}{{PHP_EOL}}住所:{{address}}{{PHP_EOL}}↓

氏名:<?php echo $name; ?><?php echo $PHP_EOL; ?>住所:<?php echo $address; ?><?php echo $PHP_EOL; ?>↓

氏名:ぴよたろう住所:東京都港区

Volt

PHP

mail$PHP_EOL という変数は未定義なので、何も echo されない><

Page 22: Phalcon とメールとテンプレートと

Volt で定数を出力する方法はちゃんと用意されてます

Page 23: Phalcon とメールとテンプレートと

constant(定数名)Reads a PHP constant

https://docs.phalconphp.com/ja/latest/reference/volt.html#id21

Page 24: Phalcon とメールとテンプレートと

volt で改行文字を追加してみよう その3

{{constant(PHP_EOL)}}

Page 25: Phalcon とメールとテンプレートと

氏名:{{name}}{{constant(PHP_EOL)}}住所:{{address}}{{constant(PHP_EOL)}} Volt

Page 26: Phalcon とメールとテンプレートと

氏名:{{name}}{{constant(PHP_EOL)}}住所:{{address}}{{constant(PHP_EOL)}}↓

氏名:<?php echo $name; ?><?php echo PHP_EOL; ?>住所:<?php echo $address; ?><?php echo PHP_EOL; ?>↓

氏名:ぴよたろう

住所:東京都港区

Volt

PHP

mail改行された!

Page 27: Phalcon とメールとテンプレートと

やったね!!

Page 28: Phalcon とメールとテンプレートと

おまけ 1

Page 29: Phalcon とメールとテンプレートと

他の文字は自由に出せないの(´・ω・`)?

Page 30: Phalcon とメールとテンプレートと

Volt の中に PHP そのまま書けるよ(`・ω・´)

Page 31: Phalcon とメールとテンプレートと

volt で改行文字を追加してみよう その4<?php echo “\n”; ?>

Page 32: Phalcon とメールとテンプレートと

氏名:{{name}}<?php echo “\n”; ?>住所:{{address}}<?php echo “\n”; ?>↓

氏名:<?php echo $name; ?><?php echo “\n”; ?>住所:<?php echo $address; ?><?php echo “\n”; ?>↓

氏名:ぴよたろう

住所:東京都港区

Volt

PHP

mailやっぱり改行された!

Page 33: Phalcon とメールとテンプレートと

おまけ 2その他 Volt のトラップ

Page 34: Phalcon とメールとテンプレートと

is not empty

Page 35: Phalcon とメールとテンプレートと

{% if name is not empty %}

<?php if ($name == !$empty) { ?>

name is empty で empty(name) になるが、

name is not empty で !empty(name) にならない

if not (name is empty) にする。

Volt

PHP

Page 36: Phalcon とメールとテンプレートと

配列のメソッドを呼べない

Page 37: Phalcon とメールとテンプレートと

{{ array[‘piyo’].fly() }}

<?php echo ($array[‘piyo’])->fly(); ?>

$array[‘piyo’]->fly() なら問題ないが

なぜかかっこがついて、syntax error になる。

一度別の変数に代入して回避する。

Volt

PHP

Page 38: Phalcon とメールとテンプレートと

まとめ

Page 39: Phalcon とメールとテンプレートと

Volt の挙動が変だと思ったら

変換後の PHP ファイルを確認しましょう!

PhalconPHP 楽しいよ!!!

(時たま闇に踏み込んじゃうけど……w)

まとめ