picqer / php-barcode-generator

Barcode generator in PHP that is easy to use, non-bloated and framework independent.
GNU Lesser General Public License v3.0
1.66k stars 400 forks source link

Inconsistency in $foregroundColor (string and array) #172

Open tacman opened 1 year ago

tacman commented 1 year ago

In the PNG generator, the signature is

public function getBarcode($barcode, $type, int $widthFactor = 2, int $height = 30, array $foregroundColor = [0, 0, 0])

But in all the others, it's a string

public function getBarcode($barcode, $type, int $widthFactor = 2, int $height = 30, string $foregroundColor = 'black')

If they were the same, we could create a BarcodeGeneratorInterface, and each generator could implement it. I think that'd be better than simply extending the abstract class.

What do you think about creating a version 3 uses an interface and requires that $foregroundColor is a string in all the generators?

tacman commented 1 year ago

On a related note, the getBarcode signature is inconsistent in BarcodeGeneratorDynamicHTML

public function getBarcode($barcode, $type, string $foregroundColor = 'black')
casperbakker commented 1 year ago

What do you think about creating a version 3 uses an interface and requires that $foregroundColor is a string in all the generators?

Yes, that could work. Lots of these issues are legacy from 10+ years of this code' existence. Bit by bit we modernise it, which is nice.

For version 3 I am also thinking about pulling the BarcodeTypes and Generators further apart, where you can inject the results of a BarcodeType into a Generator (but with different names). That way it is easier to build or tweak your own generator. A better interface could also help with that.