PHP5.6のレガシーな環境でLaravelと同じように開発をする
10年前に作られたようなPHPのサイトのお問い合わせを追加したり、
管理画面を作ったりというお仕事もしています。
前提としてはPHP5系のサポートは終わっているのでセキュリティ的なところは何も言えません。
ただサーバ移管はお金が高くでできないけどシステムをサクッと作ってくださいという依頼はたくさんあります。
そこで少しでも楽に開発ができるように5.6でもLaravelと同じように開発できる最低限のComposer設定をまとめました。
各モジュールの詳細な利用方法は各Githubにてご確認ください。
Composer設定
{
"autoload": {
"psr-4": {
"eftec\\": "vendor/eftec/"
}
},
"require": {
"vlucas/valitron": "1.4.7",
"eftec/bladeone": "2.4",
"swiftmailer/swiftmailer": "^5.4",
"monolog/monolog": "^1.25"
}
}
$ composer install
Composerパッケージの概要
vlucas/valitron
バリデーションバッケージ。
Laravelと同じようにルールを決めてメッセージのラベルを設定するだけ。
https://github.com/vlucas/valitron
ソース例
$v = new Valitron\Validator($_POST);
// エラーメッセージのラベル
$v->labels([
'name' => '名前',
'email' => 'メールアドレス'
]);
// 必須入力
$v->rule('required', [
'name',
'email'
]);
// 最大文字数
$v->rule('lengthMax', ['name', 'email'], 255);
// メールアドレスチェック
$v->rule('email', ['email']);
if (!$v->validate()) {
return $v->errors();
}
eftec/bladeone
Bladeテンプレートエンジン。
Smartyより断線使いやすい。
https://github.com/EFTEC/BladeOne
ソース例
@include('header')
<main>
<h1>{{$title}}</h1>
@if( $a == 1 )
{{$sample}}
@endif
</main>
swiftmailer/swiftmailer
LaravelのSwiftmailerと同じです。
Qdmailはもう卒業しましょう。
SMTP送信や文字化け等、全く気にしないで送信できます。
https://github.com/swiftmailer/swiftmailer
ソース例
<?php
function send_mail($to, $subject, $body)
{
$transport = (new Swift_SmtpTransport('localhost', 587))
->setUsername('user name')
->setPassword('password');
$mailer = new Swift_Mailer($transport);
$message = (new Swift_Message($subject))
->setFrom(['[email protected]' => 'テスト'])
->setTo([$to])
->setBody($body);
return $mailer->send($message);
}
monolog/monolog
Laravelの
と同じようなログ機構。
簡単なフォームでもログをきちんと取っておくと後で原因が追いやすい。
ローテーションもできるのでログの圧迫も気にしなくて大丈夫。
https://github.com/Seldaek/monolog
ソース例
<?php
$log = new Logger('form');
$log->pushHandler(new RotatingFileHandler('./logs/form.log'), 60);
$log->info('=== Start ===');
まとめ
PHP5.6はCakePHPやSmatyのテンプレートエンジンやQdmailで実装していたときが懐かしい。
セキュリティ的には良くないので早めにPHP7系にアップデートすることをおすすめします。
PHPのサポート期限をまとめてくれている方がいるのでこちらを参照してください。