Submit Search
Upload
Phalcon とメールとテンプレートと
•
1 like
•
5,818 views
Y
Yuhshi
Follow
PHP BLT #1 2015-11-24 http://phpblt.connpass.com/event/21929/
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 39
Download now
Download to read offline
Recommended
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
Dependency Injection and Pimple
Dependency Injection and Pimple
DQNEO
PHPという概念が存在しない退屈な世界
PHPという概念が存在しない退屈な世界
Yoshihiro Ohsuka
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
Masahiro Nagano
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
将之 小野
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
Minero Aoki
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
Hiroyuki Inoue
Recommended
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
Dependency Injection and Pimple
Dependency Injection and Pimple
DQNEO
PHPという概念が存在しない退屈な世界
PHPという概念が存在しない退屈な世界
Yoshihiro Ohsuka
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
Masahiro Nagano
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
将之 小野
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
Minero Aoki
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
リアルタイム分析サービス『たべみる』を支える高可用性アーキテクチャ
Hiroyuki Inoue
Current status of PSR - Phpblt1
Current status of PSR - Phpblt1
Yui Sakamoto
Writing php extensions in golang
Writing php extensions in golang
do_aki
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
Phalcon 謹製テンプレートエンジン Volt - Meet phalcon Volt
Phalcon 謹製テンプレートエンジン Volt - Meet phalcon Volt
Kazumi IWANAGA
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
PHP7ではなくHack/HHVMを選ぶ理由
PHP7ではなくHack/HHVMを選ぶ理由
Yuji Otani
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
Kurata Takeshi
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
Toru Miyahara
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
mizukami4
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Toru Miyahara
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
ShigekiInatama
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
More Related Content
Viewers also liked
Current status of PSR - Phpblt1
Current status of PSR - Phpblt1
Yui Sakamoto
Writing php extensions in golang
Writing php extensions in golang
do_aki
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
Phalcon 謹製テンプレートエンジン Volt - Meet phalcon Volt
Phalcon 謹製テンプレートエンジン Volt - Meet phalcon Volt
Kazumi IWANAGA
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
PHP7ではなくHack/HHVMを選ぶ理由
PHP7ではなくHack/HHVMを選ぶ理由
Yuji Otani
Viewers also liked
(6)
Current status of PSR - Phpblt1
Current status of PSR - Phpblt1
Writing php extensions in golang
Writing php extensions in golang
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Phalcon 謹製テンプレートエンジン Volt - Meet phalcon Volt
Phalcon 謹製テンプレートエンジン Volt - Meet phalcon Volt
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP7ではなくHack/HHVMを選ぶ理由
PHP7ではなくHack/HHVMを選ぶ理由
Recently uploaded
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
Kurata Takeshi
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
Toru Miyahara
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
mizukami4
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Toru Miyahara
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
ShigekiInatama
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
Recently uploaded
(7)
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Phalcon とメールとテンプレートと
1.
Phalcon とメールと テンプレートと
2.
ゆーし (Yuhshi /
晴柳祐志) WEB系の SIer で働いてます。 PhalconPHP やってます。 2008年以来2度目の発表です。
3.
PhalconPHP でメール送信 このフレームワークは メール送信機能は付属していません。
4.
PhalconPHP でメール送信 送信は Qdmail
というライブラリに任せました。 本文の生成は PhalconPHP の テンプレートエンジン Volt に頼ります。 Volt は自動的に PHP ファイルに変換されます。
5.
本文の生成の話 (メール送信そのものはもう話しません!)
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.
$view = new
View(); 画面表示用の View インスタンスを使い回して メール送信 → 送信完了画面表示 としたら画面が真っ白になりました>< メール送信用にインスタンス生成が必須
8.
地獄の改行問題
9.
改行が増える 改行コードを CRLF にしていたら 改行が増えました。 メールサーバのせいなのかライブラリのせいなのか は追求していませんが、 LF
にしてから送信処理に渡すことで回避。
10.
改行が減る
11.
氏名:{{name}} 住所:{{address}} ↓ 氏名:<?php echo $name;
?> 住所:<?php echo $address; ?> ↓ 氏名:ぴよたろう住所:東京都港区 Volt PHP mail ?
12.
13.
?> の直後の改行は、PHP に よって取り除かれます。 http://jp.php.net/manual/ja/tutorial.firstpage.php
14.
仕方ないので 改行の出力を追加しよう (´・ω・`)
15.
volt で改行文字を 追加してみよう {{“n”}}
16.
氏名:{{name}}{{“n”}} 住所:{{address}}{{“n”}} Volt
17.
氏名:{{name}}{{“n”}} 住所:{{address}}{{“n”}} ↓ 氏名:<?php echo $name;
?><?php echo ‘n’; ?> 住所:<?php echo $address; ?><?php echo ‘n’; ?> ↓ 氏名:ぴよたろうn住所:東京都港区n Volt PHP mail そのまま><
18.
シングルクォートで 囲ってくれるなんて Volt さん、親切ですね><
19.
volt で改行文字を 追加してみよう その2 {{PHP_EOL}}
20.
氏名:{{name}}{{PHP_EOL}} 住所:{{address}}{{PHP_EOL}} Volt
21.
氏名:{{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 されない><
22.
Volt で定数を出力する方法は ちゃんと用意されてます
23.
constant(定数名) Reads a PHP
constant https://docs.phalconphp.com/ja/latest/reference/volt.html#id21
24.
volt で改行文字を 追加してみよう その3 {{constant(PHP_EOL)}}
25.
氏名:{{name}}{{constant(PHP_EOL)}} 住所:{{address}}{{constant(PHP_EOL)}} Volt
26.
氏名:{{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 改行された!
27.
やったね!!
28.
おまけ 1
29.
他の文字は自由に 出せないの(´・ω・`)?
30.
Volt の中に PHP そのまま書けるよ(`・ω・´)
31.
volt で改行文字を 追加してみよう その4 <?php
echo “n”; ?>
32.
氏名:{{name}}<?php echo “n”;
?> 住所:{{address}}<?php echo “n”; ?> ↓ 氏名:<?php echo $name; ?><?php echo “n”; ?> 住所:<?php echo $address; ?><?php echo “n”; ?> ↓ 氏名:ぴよたろう 住所:東京都港区 Volt PHP mail やっぱり 改行された!
33.
おまけ 2 その他 Volt
のトラップ
34.
is not empty
35.
{% 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
36.
配列のメソッドを呼べない
37.
{{ array[‘piyo’].fly() }} ↓ <?php
echo ($array[‘piyo’])->fly(); ?> $array[‘piyo’]->fly() なら問題ないが なぜかかっこがついて、syntax error になる。 一度別の変数に代入して回避する。 Volt PHP
38.
まとめ
39.
Volt の挙動が変だと思ったら 変換後の PHP
ファイルを確認しましょう! PhalconPHP 楽しいよ!!! (時たま闇に踏み込んじゃうけど……w) まとめ
Download now