130964

Barcode.php 掲示板


[トップに戻る] [スレッド表示] [ツリー表示] [トピック表示] [留意事項] [ワード検索] [管理用]
投稿キー (右画像の数字を入力) 投稿キー
おなまえ
Eメール
タイトル
コメント
参照先
暗証キー (英数字で8文字以内)
文字色
PHP9 動的プロパティ廃止対応 投稿者:Pao@Office 投稿日:2024/11/06(Wed) 15:56 No.107

一応方針を定めましたので、ご意見があれば返信してください。

PHP9での動的プロパティ廃止に向けた対応として、**set/**getは使用せず、以下のように実装する予定です。
この方式により、既存ユーザーのコードを変更することなく、新規ユーザーには将来を見据えた実装方法を提供できます。

---
<?php
class BarcodeClass {
// 従来のユーザーのために、動的プロパティをそのまま利用可能にする
private array $properties = [];

// 新規ユーザー向けの推奨インターフェース
public function setProperty($name, $value) {
$this->$name = $value; // 内部的にも動的プロパティをそのまま使用
}

public function getProperty($name) {
return $this->$name ?? null;
}
}

// 使用例:
// 1. 従来通りの使い方(下位互換)
$obj->newProp = "値";

// 2. 新規の推奨される使い方
$obj->setProperty("newProp", "値");
---

この実装方針について、特に以下の点でご意見をいただければ幸いです:
1. 下位互換性の維持
2. PHP9(および移行期のPHP8.3)以降で利用できること
3. 本来の?__get および __set マジックメソッドを利用しなくてもよいか?

よろしくお願いいたします。


Re: PHP9 動的プロパティ廃止対応 - Pao@Office 2024/11/08(Fri) 16:56 No.108
PHP5 〜 PHP9 に対応する手法として、次の両方を利用できるようにします。

旧: PHP5-PHP8.1(8.2-8.3)も可 / PHP8.3警告,PHP9エラー [動的プロパティ]
$barcode->dispStartStopCode = $dispStartStopCode;

新: PHP5-PHP9 全て可
$barcode->setProperty(Code39::PROP_DISP_START_STOP_CODE, $dispStartStopCode);

ーーーー

CODE39 のプロパティだけですが、ソースコードをお見せしておきます。次のようにコンストラクタで分け、入力するプロパティ名は定数とします。

class Code39 {

/** @var string 添字(バーコードの下の文字)を描画する・しない */
const PROP_TEXT_WRITE = 'TextWrite';

/** @var string 添字(バーコードの下の文字)のフォントファイル名 */
const PROP_FONT_NAME = 'FontName';

/** @var string 添字のフォントサイズ */
const PROP_FONT_SIZE = 'FontSize';

/** @var string スタート/ストップコード表示する・しない */
const PROP_DISP_START_STOP_CODE = 'dispStartStopCode';

/** @var string バー厚み */
const PROP_BAR_THICK = 'BarThick';

/** @var string 黒バーの太さ調整ドット数 */
const PROP_KURO_BAR_COUSEI = 'KuroBarCousei';

/** @var string スタート・ストップコードを含めたコード(テキスト) */
const PROP_OUTPUT_CODE = 'outputCode';

/*! 添字(バーコードの下の文字)を描画する・しない */
var $TextWrite = true;

/*! 添字(バーコードの下の文字)のフォントファイル名 */
var $FontName = "./font/mplus-1p-black.ttf";

/*! 添字のフォントサイズ */
var $FontSize = 10.0;

/*! スタート/ストップコード表示する・しない */
var $dispStartStopCode = true;

/*! バー厚み */
var $BarThick = 1.0;

/*! 黒バーの太さ調整ドット数 */
var $KuroBarCousei = 0.0;

// スタート・ストップコードを含めたコード(テキスト)
var $outputCode = "";

/** @var array<string,string> プロパティの定義配列 */
private $validProperties;

public function __construct() {
if (version_compare(PHP_VERSION, '8.2.0', '>=')) {
// PHP 8.2以降の場合
$this->validProperties = [
'TextWrite' => 'bool',
'FontName' => 'string',
'FontSize' => 'float',
'dispStartStopCode' => 'bool',
'BarThick' => 'float',
'KuroBarCousei' => 'float',
'outputCode' => 'string'
];
} else {
// PHP 8.2未満の場合
$this->validProperties = array(
'TextWrite' => 'bool',
'FontName' => 'string',
'FontSize' => 'float',
'dispStartStopCode' => 'bool',
'BarThick' => 'float',
'KuroBarCousei' => 'float',
'outputCode' => 'string'
);
}
}

public function setProperty($name, $value) {
if (isset($this->validProperties[$name])) {
$this->$name = $value;
}
}

public function getProperty($name) {
//return $this->$name ?? null;
return isset($this->$name) ? $this->$name : null;
}


Re: PHP9 動的プロパティ廃止対応 - Pao@Office 2024/11/21(Thu) 21:33 No.109
動的プロパティを勘違いしており、バーコードクラス側で宣言されていないプロパティを使う側で使用しようとしたときに発生することだと改めて認識しました。

従って
セッター・ゲッターのプロパティは不要になります。

改めて、ソースコード全体を整備しました。
コメントもPHP7.0 以降のコメントに変更したためインテリセンスも正常に機能し、型チェックも行えるようになります。

リリースまでは、1週間程度お待ちください。おそらくPHP9 でも問題なく動作するバージョンです。

このスレッドの途中の経緯につきましては、今のところ残しておきますが、皆様が混乱してしまうと思いますので、次回リリース時には、削除してここに書いた最新の対応結果だけ記述させていただきます。

よろしくお願いいたします。

PHP8.3対応について 投稿者:スクロール360 八野宗積 投稿日:2024/10/15(Tue) 14:24 No.104

お世話になっております。
株式会社スクロール360の八野と申します。

先日、このライブラリを購入してサンプルコードを実行したところ、動的プロパティの設定部分でエラーとなりました。

PHP8.3では動的プロパティが禁止となっていることが原因です。
エラーの発生個所がEAN128.php内となります。
class GS1_128に$minWidthDotが宣言されていないので、このプロパティを設定しようとするとエラーとなります。

こちらはPHP8.3に対応していないのでしょうか?
ご回答のほど、よろしくお願い申し上げます。


Re: PHP8.3対応について - Pao@Office 2024/10/15(Tue) 16:58 No.105
お問い合わせありがとうございます。

調査させていただきますので、しばらくお待ちください。

よろしくお願いいたします。


Re: PHP8.3対応について - Pao@Office 2024/11/06(Wed) 14:50 No.106
お待たせしており申し訳ございません。

良く存じ上げていなかったのですが、
$object->newProp = "value";
といった動的プロパティの指定が推進されなくなり、
__get および __set マジックメソッドを使用: クラス内で __get と __set を定義し、動的プロパティのように扱いたいデータを柔軟にアクセス・設定できるように。という方針のようですね。

これについては、当然対応はさせていただこうと思います。ただし、すぐにはできないことをご了承ください。

なお、
ただいま、PHP8.3 で試してみました。次の動画をご覧ください。
https://www.pao.ac/~pao/php8.3.mp4

特に問題なく、GS1-128=EAN128 は動作いました。
この動画の後に、画面上下のpng形式の出力をgif形式に変更して出力してみました。
ここでは、動的プロパティ設定を使用しておりますが、問題なく動作しております。

PHP8.3 では、動的プロパティは「エラー」ではなく「警告」という情報を得ています。
完全廃止になり、エラーになるのは、PHP9以降と伺っていますが、間違っておりますでしょうか?
恐らく警告のレベルをエラーとするかの設定ではないかと思われます。

もし、現状でも動作するようであれば、お試しいただけますか?プロジェクトの規約等で動的プロパティの利用が禁止されている場合、次のバージョンアップまでお待ちください。

極力、早めに、インタフェイスとして、動的プロパティに加えて、__get および __set マジックメソッドのインタフェイスを加えたいとは思っております。

よろしくお願いいたします。

コンビニバーコードの精度アップ方法 投稿者:Pao@Office 投稿日:2024/09/12(Thu) 20:16 No.103

お問い合わせも多いため、コンビニ標準料金収納バーコードについて、精度アップの方法を過去のお客様のやり取りとして記載させていただきます。
多くのお客様が、この方式で検査でよい結果をいただいております。

ーー以下過去のメールのやり取りのログ---

-------------------------------------------------------
PDFバーコード出力において、黒バーが薄かったり、
黒バーの間に白い細いラインが入ることがございました。
(プリンタによります)
-------------------------------------------------------
対応策として、$BarThick プロパティを追加しました。
既定値は1です。
ドット単位で黒バーの厚みを調整する(増す)ことが出来ます。
引数:$minWidthDot と併用してお使いください。
例(インクジェットプリンタPX-502Aで検証):
$minWidthDot = 3 / $BarThick = 2
-------------------------------------------------------
 検査結果も良好で
 サンクス・ローソン・am/pm・セブンイレブン
 の4店舗にて動作確認済みです。

購入時のバージョンについて 投稿者:西田 投稿日:2019/12/20(Fri) 16:57 No.96

メールで連絡していましたが、ご返信がありませんでしたので、こちらに投稿させていただきます。
約2年前に購入させていただきました。
今頃気が付いたのですが、
「Barcode.php」のバージョンを確認したところVer 1.5でした。
購入した時期からするとVer 2.1が妥当だったと思います。
Ver 1.5だとPHP7に対応していないため、大変困っております。
Ver 2.1を提供していただけないでしょうか?


Re: 購入時のバージョンについて - Pao@Office 2019/12/23(Mon) 17:52 No.97
お問い合わせありがとうございます。

ご要望の内容は把握させていただきました。
お使いのバージョンが、1.5ということで、
申し訳ございません、それ以前の版の Barcode.phpは、廃版とさせていただいており、
2.0以降の版とは別製品とさせていただいております。
移行期間は1年間は無償でアップグレードさせていただいておりました。

現在は、製品サイトに記載がございます通り、次のようになっております。
-------------------------------------------------------------------------
これまで、2011/03/30 Barcode.php ver 1.0 販売開始以来、アップグレードは無償とさせていただいておりました。
Barcode.php ver 1.5 〜 ver 2.0 に至り、大きな改善があったことを理由とさせていただき、
Barcode.php ver 1.5 以前から、ver 2.0 以降へのアップグレードは有償とさせていただきます。
アップグレード価格は、定価の3割(税抜6,000円)で承らせていただきます。
アップグレードにてご購入いただく際は、info@pao.ac までご連絡ください。
なお、今後当面、アップグレードは無償とさせていただく予定でございます。
よろしくお願いいたします。
---------------------------------------------------------------------

単刀直入に書きますと、ver 1.5 以前のバージョンをお持ちの方は、
有償でアップグレード可能で、
定価の3割(税抜6,000円)で提供させていただいているということでございます。

ご理解の程、よろしくお願いいたします。


Re: 購入時のバージョンについて - 西田 2019/12/23(Mon) 18:44 No.98
ご回答ありがとうございます。

こちらの意図が伝わっていないかもしれないので、
念のため確認させてください。

購入させていただいたのは、約2年前、詳細には2017/12/05になります。
この時の最新バージョンは2.1ですが、
提供いただいたバージョンは1.5でした。
私としては、1.5の提供自体が誤りだった認識です。
ですので、改めて2.1の提供を希望しております。

それを踏まえた上で、今使っているのが1.5だから
有償アップデートしてくださいと言われているのでしょうか?


Re: 購入時のバージョンについて - Pao@Office 2019/12/25(Wed) 22:07 No.100
そういうことでございましたか。
それは大変申し訳ございませんでした。
急ぎ、 ver 2.1 版をお送りさせていただきます。
よろしくお願いいたします。


Re: 購入時のバージョンについて - 西田 2019/12/26(Thu) 08:37 No.101
2.1のご提供を確認しました。
ご対応ありがとうございました。

「購入時のバージョンについて」の追記 投稿者:西田 投稿日:2019/12/25(Wed) 21:06 No.99

No.97の返信としてNo.98を記載していますが、
確認されていますでしょうか?

v1.1からv2.1へのアップグレードについて 投稿者:貞廣 投稿日:2018/07/25(Wed) 14:37 No.87

現在、v1.1を使わせていただております。
この度、PHP7.2に対応するためv2.1へのアップグレードを予定しているのですが、APIの変更等でクライアントコードの修正が必要になることはありますでしょうか。
そのほかアップグレードにあたって何か留意することがあれば、教えてください。


Re: v1.1からv2.1へのアップグレードについて - Pao@Office 2018/07/25(Wed) 15:38 No.88
貞廣 様
お問い合わせありがとうございます。

アップグレードを行っても
barcode.php を使用する側は、問題なく動作するはずでございます。
下位互換は取れております。
万一、下位互換が取れておらず、クライアントコードの修正が必要な個所があった場合、
できる限り、サポートさせていただきます。
よろしくお願いいたします。


Re: v1.1からv2.1へのアップグレードについて - 貞廣 2018/07/31(Tue) 16:30 No.89
ご回答ありがとうございます。
アップグレードに際してクライアント側の修正は不要ということで安心いたしました。
もし何かあればまた質問させていただきますので、その時もよろしくお願いいたします。

試用版がダウンロードできない 投稿者:石川 投稿日:2018/04/12(Thu) 15:56 No.83

試用版がダウンロードできないのですが、試用版の入手方法は?


Re: 試用版がダウンロードできない - Pao@Office 2018/06/01(Fri) 15:17 No.85

ご返事が遅くなり申し訳ございません。

ご迷惑をおかけしております。

最新版のzipファイルだけがダウンロードできなくっております。
http://www.pao.ac/barcode.php/file/
こちらからもダウンロードできない状況ですので、
問題なければ、ひとつ前のバージョンでしたらダウンロードしていただけますので、zipファイルをダウンロード後、お試しください。

弊社としても大きな問題ですので、最新版がダウンロードできるよう急ぎ対応いたします。

よろしくお願いいたします。


Re: 試用版がダウンロードできない - Pao@Office 2018/06/01(Fri) 15:33 No.86
原因がわかりました。
*.php.zip というファイル名にしておりました。
このphpが邪魔していたようでした。
対策として、.php を省いたファイル名に変更いたしました。
ダウンロード可能になっていると思います。
製品サイトに飛びましたら一度、F5 でブラウザをリフレッシュしてからお試しください。
http://www.pao.ac/barcode.php/#download

ご迷惑をおかけいたしました。申し訳ございませんでした。

GS1 Databar限定型での処理エラーについて 投稿者:佐藤 潤 投稿日:2018/05/29(Tue) 18:29 No.84

購入した製品、サンプルサイトにおいても「17777777777779」のコード(末尾9はチェックデジット)でバーコード出力をしようとすると、処理エラーで終了します。チェックデジットを抜いた「1777777777777」で実行しても同様です。
チェックデジットの指定は一般財団法人 流通システム開発センターさんのサイトでチェックしたものになります。早急に調査をお願い致します。

Barcode.php ver 1.5.0 リリース 投稿者:Pao@Office 投稿日:2016/01/27(Wed) 15:09 No.78

新たに2つの2次元バーコードを含めた DataMatrix / PDF417 / CODE39 に対応しました。
試用版・サンプルございます。是非、お試しください。

今回のリリースについて、多くのメディアで掲載していただきました。ありがとうございました。
BIGLOBE: http://news.biglobe.ne.jp/economy/0127/3138378562/atp_atp_js_img_88265_1_png.html
SankeiBiz: http://www.sankeibiz.jp/business/news/160127/prl1601270932012-n1.htm
excite: http://www.excite.co.jp/News/release/20160127/Atpress_88265.html?_p=2
Infoseek 楽天: http://news.infoseek.co.jp/article/atpress_88265/
朝日新聞: http://www.asahi.com/and_M/information/pressrelease/CATP201688265.html
読売新聞: http://www.yomiuri.co.jp/adv/life/release/detail/00025580.html
他...

EAN128のバーコードが別のコードになる 投稿者:久保 投稿日:2015/10/07(Wed) 09:03 No.74

EAN128を使わさせて頂いております。
特定のコードを入力した場合、別のコードとしてバーコードが生成されてしまいました。

 例: 6T4979EZ → 6Qo・・・

3文字目以降に数字が連続すると発生しているように思います。
また、サンプルページでも試させて頂きましたが同様の結果となっております。

至急、ご確認頂きたく思います。

よろしくお願い致します。


Re: EAN128のバーコードが別のコードになる - Pao@Office 2015/10/07(Wed) 11:15 No.75
お問い合わせありがとうございます。

ご迷惑をおかけしており、申し訳ございません。

確認後、対応させていただきますので、しばらくお待ちください。


Re: EAN128のバーコードが別のコードになる - Pao@Office 2015/10/08(Thu) 10:33 No.76
調査後、再現を確認させていただきました。

結論から申しますと、EAN128(GS1-128)の仕様からそのような動作になるととらえております。
6T4979EZ のような自由なコードをお使いの場合、同じコード体系のCODE128をご利用いただけませんか?

GS1-128(EAN128)は、必ずAI識別子から始まる仕様と認識しており、
先頭は必ず"{FNC1}"からスタートすることを前提として開発しているためです。

もしかしたら、EAN128(GS1-128)の仕様を弊社が認識違いしているかもしれません。
その場合は、ご指摘ください。
検討後、改善すべきであれば、対応させていただきます。

よろしくお願いいたします。


Re: EAN128のバーコードが別のコードになる - 久保 2015/10/08(Thu) 15:12 No.77
ご対応頂き、ありがとうございます。
仕様についても理解しました。

CODE128で検討してみます。

Page: | 1 | 2 | 3 |

処理 記事No 暗証キー

- YY-BOARD -