Download the PHP package edmondscommerce/php-generic without Composer
On this page you can find all versions of the php package edmondscommerce/php-generic. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download edmondscommerce/php-generic
More information about edmondscommerce/php-generic
Files in edmondscommerce/php-generic
Package php-generic
Short Description Generator for generic array/vector.
License MIT
Homepage https://github.com/edmondscommerce/php-generic
Informations about the package php-generic
This is a Fork
Please see original: https://github.com/d0niek/php-generic
This is now becoming more of a pure wrapper for php-ds to allow generating of typed implementations of the php-ds data structures.
Currently there is only Vector, though more might be added as we need them
PHPStan
Currently seeing some issues with PHPStan, suggest the following ignore errors:
Original README
Prepare for future with php-generic
According to this article which shows how to create strictly typed arrays and collections in Php7, php-generic generator was born.
There is some discusion about generic in Php but who knows when it comes to us.
It is not exacly what you know from Java or C++ where generic looks like
Vector<int>()
, Array<bool>()
or Vector<\Namespace\Entity\User>()
.
Here generics looks like VectorInt
, ArrayBool
and VectorUser
so I hope when they come to nativ Php all what you need to do will be:
- Replace all
VectorType
,ArrayType
toVector<Type>
,array<Type>
, - Delete directory where you store all generated array/vector,
- Enjoy a nice day.
What generics are (not)
They are not collections like Doctrine or Laravel Collections. They are like normal php array
which can store values one type. array<int>
can store only numeric values which will converted to int
so you can not push 'some string value'
to it.
Install
Generate generic array<Type>
There is a bin command that you should find in vendor/bin or somewhere else according to your composer.json settings.
To generate a generic array run:
where:
- -s|--saveCollection - do you want to save generated array for future regenerate (default true),
- type - is a type of generic array. It can be simple type (bool, int, float, string, array) or complex type (\YourApp\Module\Repository\User),
- namespace - is a namespace where new generic array will be save. Remember that namespace's directory have to exists. To separate namespace parts use \\ or / to speed up typing if your namespace is 1:1 with your directory structure
For example you have project in /path/to/project and your composer.json contains this kind of entry:
Now, when you call command like this:
new generic array ArrayInt
will be save to /path/to/project/src/Collections/ directory.
If this directory does not exists, exceptions will be throw.
Tip! Store all php-generics in one diretory and add it to .gitignore. When php will start support generics, replace
ArrayInt
toarray<int>
and remove php-generic directory.
Generate generic Vector<Type>
You can alse generate generic \Ds\Vector (it is new data structure since Php7, here you can and you should read about it!). To do this just run:
parameters means exacly the same whats means when you run generate:array
.
Regenerate
By defaule generated array/vector are save in generated-colletions.json file in your root app path.
Keep this file in repository and ignore all generated php-generics. When you clone repository,
after composer install
run:
and all your collections will be regenerate.
Select data from DB
Now you can create in easy way specific generic when you are selecting data from DB
Test
Before you run tests remember to regenerate collections. Run:
and now you can run
All versions of php-generic with dependencies
symfony/console Version ^3.2|^4.2
ext-ds Version *
ext-json Version *
edmondscommerce/typesafe-functions Version ^0.2
php-ds/php-ds Version ^1.2