QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
QRコード(二次元バーコード)作成ライブラリ「cakePHP-QR-Code-Helper」は1ファイルを設置するだけで使える簡単便利なライブラリ
「cakePHP-QR-Code-Helper」は CakePHP2用のライブラリ
URL短縮サービス・TTTオンライン(https://ttt.onl)に QRコード(二次元バーコード)を表示させるために使う QRコード生成ライブラリを探していたときに「cakePHP-QR-Code-Helper」を見つけました。
このライブラリは、画像を扱うための追加のライブラリを必要とせず、1ファイルをサーバにアップするだけで使えるという便利なライブラリでした。
ただ、このライブラリは CakePHP2用のライブラリでしたので、CakePHP3で使うときも少しの修正が必要でした。
その時の話は「CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」」に記事を書いていますので参考にしてください。
今度は、これをプレーンの PHPで使いたいと思い、改めてカスタマイズをしましたので、そのカスタマイズ方法を紹介します。
「cakePHP-QR-Code-Helper」の設置方法や、各機能の利用の仕方については「CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」」に書いていますので、そちらを参考にしてください。
この記事では、その記事を読んでいる前提で、プレーンの PHPで使う場合の対応方法についてのみ解説します。
「cakePHP-QR-Code-Helper」をプレーンの PHPで使う方法解説
1.ライブラリのダウンロードとファイルの設置
該当の CakePHP2用 QR Code Helperは下記に置いてあります。
muxe/cakePHP-QR-Code-Helper
https://github.com/muxe/cakePHP-QR-Code-Helper
ここからダウンロードして、展開(解凍)して、「QrCodeHelper.php」ファイルを取り出し、好きなところにファイルを設置します。
CakePHP2の場合は、下記の場所に設置することになりますが、プレーンの PHPで使う場合はどこにおいても OKです。
「/app/View/Helper/QrCodeHelper.php」
2.「QrCodeHelper.php」ファイルのカスタマイズ
「cakePHP-QR-Code-Helper」は、CakePHP2用に作れていますので、classの設定部分を少し修正する必要があります。
また、作成した QRコードを imgタグに組み込む処理を CakePHPの HTMLヘルパーを使っていますので、この部分も修正する必要があります。
それら「QrCodeHelper.php」の修正箇所について解説します。
2-1.class名の指定部分の修正
「QrCodeHelper.php」の11行目を修正します。
1 2 3 4 5 |
// 修正前 class QrCodeHelper extends AppHelper { // 修正後 class QrCodeHelper { |
2-2.HtmlHelper部分の修正
「QrCodeHelper.php」の 64行目、78行目、88行目、101行目、139行目、149行目、159行目、187行目、199行目、241行目を修正します。
1 2 3 4 5 |
// 修正前 return $this->Html->image($this->base_url . urlencode($text) . $this->_optionsString($options)); // 修正後 return $this->base_url . urlencode($text) . $this->_optionsString($options); |
上記は、64行目の修正内容ですが、他の行も同様に、「$this->Html->image()
」を取り除きます。
先にも書きましたが、CakePHP2では HtmlHelperの処理「$this->Html->image()
」で imgタグを編集する処理を実行しています。
ですが、プレーンの PHPには HtmlHelperはありませんので、これを記述したままでは下記のようなエラーが発生します。
Notice: Undefined property: QrCodeHelper::$Html in /var/www/html/QrCodeHelper.php on line 65
Fatal error: Uncaught Error: Call to a member function image() on null in /var/www/html/QrCodeHelper.php:65 Stack trace: #0 /var/www/html/qrcode.php(91): QrCodeHelper->text('aa', Array) #1 {main} thrown in /var/www/html/QrCodeHelper.php on line 65
3.QRコードを表示する側、「QrCodeHelper.php」を読み込む側を作成
「QrCodeHelper.php」を読み込む側のプログラムは、下記のようになります。
たった 4行で QRコードが作れてしまいます!!
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php // 「QrCodeHelper.php」の読み込み require ("QrCodeHelper.php"); // インスタンスの作成 $qrcode = new QrCodeHelper; // QRコードにする URLの指定 $url = "https://blog.s-giken.net"; // QRコードの表示 echo '<img src="' . $qrcode->text($url,["size"=>"200x200","encode"=>"UTF-8","margin"=>"2","error_correction"=>"L"]) . '">'; |
上記の「$qrcode->text()
」では、生成された QRコードが URLとして取得できます。
そのため、それを画面に表示するために imgタグに編集しています。
CakePHP2であれば、ライブラリの中で「$this->Html->image()
」のヘルパーを使って imgタグに編集していますので、imgタグに編集した値が戻ってきます。
そのため、下記のように echoなどで出力するだけで OKでした。
1 |
echo $qrcode->text($newUrl,["size"=>"150x150","encode"=>"UTF-8","margin"=>"2","error_correction"=>"L"]); |
もし、CakePHP2と同じ様に、imgタグに編集された状態の戻り値を取得したい、というのであれば、「$this->Html->image()
」で実行される処理と同じような関数を作成し、ライブラリ内に組み込むといいでしょう。
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」についてのまとめ
「cakePHP-QR-Code-Helper」ライブラリについての詳しい話は「CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」」を読んでいただければ、と思いますが、ライブラリの内部では Googleのグラフを表示する APIの「Google Chart API」を使っています。
そのため、QRコード(二次元バーコード)の生成自体は「Google Chart API」で行っていますので、画像を作成するライブラリなどを別途インストールする必要がありません。
つまり、ライブラリがインストールできないレンタルサーバなどでも組み込みが可能です。
また、サーバ内で画像を生成しませんので、サーバに画像が貯まることもなく、サーバの容量を気にする必要もありません。
ちなみに、この処理を使って QRコード(二次元バーコード)作成サービスを作ってみました。
あわせてご利用ください!!
QRコード(二次元バーコード)作成サービス
https://s-giken.info/qrcode/index.php
詳しい解説はこちらの記事を。
QRコード(二次元バーコード)作成サービスを公開
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説
お問い合わせ等のメールフォームから送ったメールがスパム扱いされる!その対策としてライブラリ「Phpmailer」を使う方法を解説。関数化していますのでコピペでOK。
-
ECCUBEでカード決済NGの受注情報をマイページ購入履歴に表示しない方法解説
ECCUBEでカード決済に失敗しても購入履歴一覧に注文情報(受注情報)が表示される問題への対処方法を解説。受注情報レコードの作成の流れとステイタスについても解説。
-
複数銘柄を指定して株価チャートを一覧するツール公開
入力銘柄の5日間、3か月間、6か月間、1年間、2年間の株価チャートを一覧表示しますのでチャートで売買判断をするのに最適です。
-
ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある
2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。
-
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。
-
ECCUBEを開発環境から本番ドメインに変更でエラーが・パス変更について
レンタルサーバでサーバ会社から割り当てられたURLで開発し、本番公開時にドメインを当てたらエラーが!そんな場合の対処方法の解説。対処方法は簡単ですが管理画面からは対応不可。
-
XML形式の値を配列形式に変換・PHPでは simplexml_load_string()
XMLとは「Extensible Markup Language」の略でテキストベースのデータフォーマット。XMLをPHPで配列に変換するWebツールの紹介とその処理「simplexml_load_string()」関数についての解説。
-
PHPで1ヵ月前、先月、今月1日、来月末の日付などの算出はDateTimeImmutableを使う
PHPには日時をオブジェクトとして生成する関数「DateTimeImmutable」「DateTime」が用意されている。これを利用して1ヶ月後、月初日、月末日、5日後などを指定して日付を取得できる。
-
QRコード(二次元バーコード)作成サービスを公開
QRコード(二次元バーコード)を生成するサービス。QRコードにする文字列を入力するだけで QRコードが簡単に作れる。オプションとして、画像サイズ、余白サイズ、エラー訂正レベルがある。
-
数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!
PHPでintegerとdoubleが混在するような計算をする場合は要注意!計算結果が整数値であっても途中で使用する変数にdoubleの値が入っているときは計算結果がintegerではない場合があります。