Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

5 181 vues

Publié le

PHP BLT #1 2015-11-24
http://phpblt.connpass.com/event/21929/

Publié dans : Ingénierie
  • Soyez le premier à commenter

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

  1. 1. Phalcon とメールと テンプレートと
  2. 2. ゆーし (Yuhshi / 晴柳祐志) WEB系の SIer で働いてます。 PhalconPHP やってます。 2008年以来2度目の発表です。
  3. 3. PhalconPHP でメール送信 このフレームワークは メール送信機能は付属していません。
  4. 4. PhalconPHP でメール送信 送信は Qdmail というライブラリに任せました。 本文の生成は PhalconPHP の テンプレートエンジン Volt に頼ります。 Volt は自動的に PHP ファイルに変換されます。
  5. 5. 本文の生成の話 (メール送信そのものはもう話しません!)
  6. 6. $view = new View(); // (ここで初期化) $view->name = $name; // テンプレートで使う変数 $view->setRenderLevel( PhalconMvcView::LEVEL_ACTION_VIEW); $view->start(); // テンプレートが views/mail/mail_template.volt にあるなら $view->render('mail', 'mail_template'); $view->finish(); return $view->getContent(); // 本文が返ってくる
  7. 7. $view = new View(); 画面表示用の View インスタンスを使い回して メール送信 → 送信完了画面表示 としたら画面が真っ白になりました>< メール送信用にインスタンス生成が必須
  8. 8. 地獄の改行問題
  9. 9. 改行が増える 改行コードを CRLF にしていたら 改行が増えました。 メールサーバのせいなのかライブラリのせいなのか は追求していませんが、 LF にしてから送信処理に渡すことで回避。
  10. 10. 改行が減る
  11. 11. 氏名:{{name}} 住所:{{address}} ↓ 氏名:<?php echo $name; ?> 住所:<?php echo $address; ?> ↓ 氏名:ぴよたろう住所:東京都港区 Volt PHP mail ?
  12. 12. ?> の直後の改行は、PHP に よって取り除かれます。 http://jp.php.net/manual/ja/tutorial.firstpage.php
  13. 13. 仕方ないので 改行の出力を追加しよう (´・ω・`)
  14. 14. volt で改行文字を 追加してみよう {{“n”}}
  15. 15. 氏名:{{name}}{{“n”}} 住所:{{address}}{{“n”}} Volt
  16. 16. 氏名:{{name}}{{“n”}} 住所:{{address}}{{“n”}} ↓ 氏名:<?php echo $name; ?><?php echo ‘n’; ?> 住所:<?php echo $address; ?><?php echo ‘n’; ?> ↓ 氏名:ぴよたろうn住所:東京都港区n Volt PHP mail そのまま><
  17. 17. シングルクォートで 囲ってくれるなんて Volt さん、親切ですね><
  18. 18. volt で改行文字を 追加してみよう その2 {{PHP_EOL}}
  19. 19. 氏名:{{name}}{{PHP_EOL}} 住所:{{address}}{{PHP_EOL}} Volt
  20. 20. 氏名:{{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 されない><
  21. 21. Volt で定数を出力する方法は ちゃんと用意されてます
  22. 22. constant(定数名) Reads a PHP constant https://docs.phalconphp.com/ja/latest/reference/volt.html#id21
  23. 23. volt で改行文字を 追加してみよう その3 {{constant(PHP_EOL)}}
  24. 24. 氏名:{{name}}{{constant(PHP_EOL)}} 住所:{{address}}{{constant(PHP_EOL)}} Volt
  25. 25. 氏名:{{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 改行された!
  26. 26. やったね!!
  27. 27. おまけ 1
  28. 28. 他の文字は自由に 出せないの(´・ω・`)?
  29. 29. Volt の中に PHP そのまま書けるよ(`・ω・´)
  30. 30. volt で改行文字を 追加してみよう その4 <?php echo “n”; ?>
  31. 31. 氏名:{{name}}<?php echo “n”; ?> 住所:{{address}}<?php echo “n”; ?> ↓ 氏名:<?php echo $name; ?><?php echo “n”; ?> 住所:<?php echo $address; ?><?php echo “n”; ?> ↓ 氏名:ぴよたろう 住所:東京都港区 Volt PHP mail やっぱり 改行された!
  32. 32. おまけ 2 その他 Volt のトラップ
  33. 33. is not empty
  34. 34. {% 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
  35. 35. 配列のメソッドを呼べない
  36. 36. {{ array[‘piyo’].fly() }} ↓ <?php echo ($array[‘piyo’])->fly(); ?> $array[‘piyo’]->fly() なら問題ないが なぜかかっこがついて、syntax error になる。 一度別の変数に代入して回避する。 Volt PHP
  37. 37. まとめ
  38. 38. Volt の挙動が変だと思ったら 変換後の PHP ファイルを確認しましょう! PhalconPHP 楽しいよ!!! (時たま闇に踏み込んじゃうけど……w) まとめ

×