エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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行目を修正します。
 

 
 

2-2.HtmlHelper部分の修正

 
「QrCodeHelper.php」の 64行目、78行目、88行目、101行目、139行目、149行目、159行目、187行目、199行目、241行目を修正します。
 

 
上記は、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コードが作れてしまいます!!
 

 
上記の「$qrcode->text()」では、生成された QRコードが URLとして取得できます。
そのため、それを画面に表示するために imgタグに編集しています。
 
 
CakePHP2であれば、ライブラリの中で「$this->Html->image()」のヘルパーを使って imgタグに編集していますので、imgタグに編集した値が戻ってきます。
そのため、下記のように echoなどで出力するだけで OKでした。
 

 
 
もし、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コード(二次元バーコード)作成サービスを公開

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace

ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。

AdminerはphpMyAdmin代替のデータベース管理ツール

AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。

ECCUBEの新規追加ページがInternal Server Error・Not Foundに

ECCUBEで新規追加したページがInternal Server Errorに!原因はファイルのパーミッションの場合が多くその対処方法とプログラムの修正ポイントを解説。Not Foundも解説。

フォルダを指定してファイルのパーミッションを変更するプログラム

フォームからフォルダ、パーミッションを指定しパーミッションを変更するサンプルプログラムの解説です。

PHP range関数を使って階乗と重複組み合わせを計算

PHPの range関数を使って階乗と重複組み合わせを計算し、それを元に乱数発生器を作成しました。

WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う
WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う

strptimeはWindowsのPHPには未実装。LinuxとMacで挙動が異なる。PHP8.1で非推奨になる。なので日付のチェックはdate_parse_from_formatを使おう。使い方を詳細解説。

CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説

CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

ECCUBE mtb_constants initパラメータ設定の項目を追加する方法

ECCUBEのパラメータ設定で設定できる項目を追加する方法を説明します。

複数銘柄を指定して株価チャートを一覧するツール公開

入力銘柄の5日間、3か月間、6か月間、1年間、2年間の株価チャートを一覧表示しますのでチャートで売買判断をするのに最適です。