【保存版】PHPで開発するなら入れておきたいライブラリ一式
PHPは多数のライブラリが存在し、同じことが出来そうなライブラリでもそれぞれ特色があると思います。
「●●ということをやりたいけど選び方がわからない」「△△を使ってみたいけど、使い方が良くわからない」など、ライブラリ導入の際には困ることもしばしば・・・。
今回は実際の開発に非常に役立つライブラリたちをご紹介します。
初回ということもあり、プチ開発から業務系まで、幅広く活用可能なものを選びました。
目次
日付操作はコレで決定 「Carbon」
日付の計算や加減算・タイムゾーンの変更など、日時に関する操作はややこしいことばかり。
でも Carbon なら面倒なことも全部解決出来ちゃいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php require_once 'vendor/autoload.php'; // Carbon use Carbon\Carbon; // 現在日時を取得 $date = Carbon::now(); // 現在日時を出力: 2019-09-01 12:34:56 echo $date->toDateTimeString(); // UTCで取得 $date = Carbon::now('UTC'); // 現在日時を出力: 2019-09-01 03:34:56 echo $date->toDateTimeString(); // 日付を指定して取得: 2019/01/02 03:04:05 $date = Carbon::create(2019, 1, 2, 3, 4, 5); |
Carbon は PHPフレームワークの一つ Laravel でも使われているという実績があるライブラリです。
新しくなった定番メール送信 「PHPMailer」
サーバーやポートの設定、ログイン認証に添付ファイル、CCやBCCなど、ひと口でメール送信と言ってもやることはいっぱい。
そんな時は PHPMailer で楽しちゃいましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
require 'vendor/autoload.php'; // PHPMailer use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // インスタンス化(trueを設定することでExceptionをONにする) $mailer = new PHPMailer(true); try { // サーバー設定 // SMTPを明示的にON $mailer->isSMTP(); // SMTPサーバーを設定 $mailer->Host = 'smtp.sample.com'; // SMTP認証をON $mailer->SMTPAuth = true; $mailer->Username = 'smtp_user@sample.com'; $mailer->Password = 'smtp_password'; // tls または ssl $mailer->SMTPSecure = 'tls'; $mailer->Port = 587; // メール送信設定 // 送信元アドレス $mailer->setFrom('example@sample.com', 'Sender'); // 送信先アドレス $mailer->addAddress('jone@sample.net', 'Joe User'); // メール内容設定 // HTMLメールをON $mailer->isHTML(true); // メールタイトルを設定 $mailer->Subject = 'Sample Mail'; // メール本文を設定 $mailer->Body = 'This is <b>Sample Mail!</b>'; // メール送信 $mailer->send(); echo 'メール送信しました'; } catch(Exception $e) { echo 'メール送信に失敗しました [Error: '.$mailer->ErrorInfo.']'; } |
HTMLメールもGmailのSMTPを利用する事もできます。
ファイルアップロードも一瞬! 「class.upload.php」
サムネイルや音楽・動画の投稿がありふれて久しいですが、アップロード処理を作るのは結構時間がかかります。
そんな時は class.upload.php であっという間に作っちゃいましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php require_once 'vendor/autoload.php'; use \Verot\Upload\Upload; $file = $_FILES['upload_file']; $lang = 'ja_JP'; // アップロードされたファイル配列を渡す // ※第2引数はエラーメッセージなどの言語設定 $handle = new Upload($file, $lang); // $fileのチェック if($handle->uploaded) { // アップロードディレクトリを指定して保存 $handle->process('./img/'); if($handle->processed) { // アップロード成功 } else { // アップロード処理失敗 echo $handle->error; } } else { // アップロード失敗 echo $handle->error; } |
サイズ制限やMimeTypeチェックもたったこれだけでできるのが嬉しいですね。
CSVならおまかせ! 「league/csv」
異なる複数のシステム同士でやり取りをする時、ファイル出力だけで解決するCSVは便利ですが、囲い文字や区切り文字、改行など細かい調整があります。
そんな手間は league/csv で一気に解決しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 読み込むCSVファイルを指定 $reader = Reader::createFromPath('data.csv', 'r'); // 文字エンコードを指定(SJIS-win -> UTF-8) CharsetConverter::addTo($reader, 'SJIS-win', 'UTF-8'); // レコード件数を取得 echo $reader->count(); // データ読み込み $records = $reader->getRecords(); foreach($records as $idx => $row) { echo $idx.":".$row[0]; // 各レコードごとの処理は割愛 } |
文字コード変換もこの通り、簡単に出来ちゃいます。
細かいレイアウト調整も出来ちゃう 「TCPDF」
領収書、請求書、利用規約、設計書、注文書、見積書、指示書、集計表・・・。
PDFの出力が必要な場面は多数あると思いますが、レイアウトの調整が難しいんですよね。
そんな時は TCPDF が便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// ライブラリの読み込み require_once('TCPDF/tcpdf.php'); // TCPDFインスタンスを作成 $orientation = 'Landscape'; // 用紙の向き $unit = 'mm'; // 単位 $format = 'A4'; // 用紙フォーマット $unicode = true; // ドキュメントテキストがUnicodeの場合にTRUEとする $encoding = 'UTF-8'; // 文字コード $diskcache = false; // ディスクキャッシュを使うかどうか $tcpdf = new TCPDF($orientation, $unit, $format, $unicode, $encoding, $diskcache); // ファイルを出力 $fileName = 'sample.pdf'; $pdfData = $tcpdf->Output(rawurlencode($fileName), 'S'); // ダウンロードさせる header('Content-Type: application/octet-stream', false); header("Content-Disposition: attachment; filename*=UTF-8''".rawurlencode($fileName)); echo $pdfData; |
HTMLでレイアウトが調整できるのも魅力の1つですね。
Excel操作の決定版 「PhpSpreadsheet」
昔からExcel操作の定番として愛されてきた PHPExcel ですが、開発終了と共に PhpSpreadsheet へ移行が推奨されています。
PHP7.2移行では PhpSpreadsheet を使いましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
require 'vendor/autoload.php'; // Spreadsheet use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Xls as XlsReader; use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use PhpOffice\PhpSpreadsheet\Style\Border; use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; // スプレッドシートを作成 $spreadsheet = new Spreadsheet(); // ファイルのプロパティを設定 $spreadsheet->getProperties() ->setTitle("タイトル"); // シート作成 $spreadsheet->getActiveSheet('sheet1')->UnFreezePane(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle("シートタイトル"); // 値を設定 $sheet->setCellValue('A1', 'Hello'); $sheet->setCellValue('B1', 'PhpSpreadsheet'); $sheet->setCellValue('C1', 'World'); // テキストの中央寄せ $sheet->getStyle('A1:B1')->applyFromArray(['alignment'=>['horizontal'=>Alignment::HORIZONTAL_CENTER]]); // 枠線を設定 $sheet->getStyle('B1')->getBorders()->getOutline()->setBorderStyle(Border::BORDER_THIN); // 列の横幅を設定 $sheet->getColumnDimension('B')->setWidth(8); // セルを連結 $sheet->mergeCells('C1:D1'); // テキストの縦寄せ $sheet->getStyle('C1:D1')->getAlignment()->setVertical(Alignment::VERTICAL_TOP); // テキストの折り返しを設定 $sheet->getStyle('C1')->getAlignment()->setWrapText(true); // 配列の形で値を設定 $dataList = [ ['Happy Bingo!'], ['B', 'I', 'N', 'G', 'O'], [26, 15, 18, 17, 13], ['6', '11', 2, 5, '14'], [1, 8, NULL, 4, 19], [21, 27, 3, 20, 24], [16, 22, 23, 25, 12], ]; $sheet->fromArray($dataList, NULL, 'C6', true); // バッファをクリア ob_end_clean(); $fileName = "sample.xlsx"; // ダウンロード header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.$fileName.'"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: cache, must-revalidate'); header('Pragma: public'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); exit(); |
さいごに
実際の開発でかなり使用する機会が多いものかと思いますがどうでしょうか?
ライブラリの選定は環境や状況によって変わってしまうため、選ぶのが大変ですね。
そんな時は今回紹介させていただいたライブラリを参考にしてみてください。
- おすすめ記事
-
-
のえる2019.06.13
-
たった5分でPHPのファイルアップロードを作る方法
のえる2019.09.11 -
PHPのセッションが勝手に消えてしまう問題と解決法
のえる2019.08.23
-
POPULAR
のえる
Full-stack Developer