Amali Perera
Amali Perera

Reputation: 125

PHP barcode does not display using external class on PHP7

Sir, I have used the PHP Barcode Generator Class to generate Code 39 barcode; I have used from http://www.shayanderson.com/php/php-barcode-generator-class-code-39.htm

Here is the code;

    //include Barcode39 class
include "Barcode39.php";

//set Barcode30 object
$bc = new Barcode39("Nimal Perera");

//display new barcode
$bc->draw();

When I run this, why would I get this error?

Notice: Array to string conversion in C:\xampp\htdocs\PHP\Barcode39.php on line 269

It mentions that requirements: Requirements: PHP Web server and GD Library (Graphics Library).

I do not what GD Library means? I have XAMPP server in localhost. Please help me.

UPDATE!!!

I am beginner to barcode programming. This is my first example. Please tell if this is the good library for me to start? or are there any libraries that is suitable for a beginner with examples and documentations? What libraries are popular?

UPDATE!!

I checked if I have installed GD. Here is screenshot

GD

Upvotes: 1

Views: 2158

Answers (1)

Matt Raines
Matt Raines

Reputation: 4218

Line 269 of Barcode39.php is:

imagefilledrectangle($img, $bars[$i][0], $bars[$i][1], $bars[$i][2], $bars[$i][3], $$bars[$i][4]);

PHP 7.0 introduced a backwards-incompatible change relating to the interpretation of $$. $$foo['bar']['baz'] used to mean ${$foo['bar']['baz']} and now means ($$foo)['bar']['baz'].

You should be able to fix the problem by replacing line 269 in the library with:

imagefilledrectangle($img, $bars[$i][0], $bars[$i][1], $bars[$i][2], $bars[$i][3], ${$bars[$i][4]});

Then file a bug report with the author.

Upvotes: 5

Related Questions