openfoodfacts / openfoodfacts-php
Open Food Facts API Wrapper, the open database about food.
Fund package maintenance!
Open Collective
openfoodfacts
donate.openfoodfacts.org/?utm_source=github&utf_medium=web&utm_campaign=funding_links
Installs: 31 085
Dependents: 2
Suggesters: 0
Security: 0
Stars: 59
Watchers: 18
Forks: 34
Open Issues: 12
Requires
- php: ^8.1
- ext-curl: *
- ext-gd: *
- ext-json: *
- guzzlehttp/guzzle: ^7.4
- psr/log: ^3.0
- psr/simple-cache: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9.5
- phpstan/phpstan: ^1.8.2
- phpstan/phpstan-phpunit: ^1.1.1
- phpunit/phpunit: ^9.5.21
- symfony/cache: ^6.1.3
This package is auto-updated.
Last update: 2024-11-06 17:37:35 UTC
README
PHP API Wrapper for Open Food Facts, the open database about food.
Current features
- Search-A-Licious (#62), user-agent (#53), PHP 8.1 (#47), Image upload
- Most features should be visible here: https://github.com/openfoodfacts/openfoodfacts-php/blob/develop/src/Api.php
- PLEASE DOCUMENT ANY MISSING FEATURES HERE
Installation
With Composer:
composer require openfoodfacts/openfoodfacts-php
Usage
This is the most basic way of creating the API:
$api = new OpenFoodFacts\Api('food','fr'); $product = $api->getProduct('3057640385148');
In the example above you access the "food" database, limited to the French language/country scope. The first parameter is either
- "food"
- "beauty" or
- "pet"
to decide which product database you want to use.
The second parameter decides the language/country scope of the chosen database: f.e. "world" or "de" or "fr".
For more details on this topic: see the API Documentation
These are all the parameters you really need for basic usage.
As return types for $api->getProduct
you get an Document::class
Object.
This may also be an Object of Type FoodProduct::class
,PetProduct::class
, BeautyProduct::class
depending on which API you are creating.
These objects inherit from the more generic Document::class
In the example above, we use the 'food' API and there will get a FoodProduct::class
For getting a first overview the Document::class
has a function to return an array representation(sorted) for a first start.
$product = $api->getProduct('3057640385148'); $productDataAsArray = $product->getData();
Optional Parameters
The other parameters are optional and for a more sophisticated use of the api (from a software development point of view):
An example in code is found here: cached_example.php
LoggerInterface: A logger which decieds where to log errors to (file, console , etc)
ClientInterface: The HTTP Client - to adjust the connection configs to your needs and more
see: Guzzle HTTP Client
CacheInterface: To temporarily save the results of API request to improve the performance and to reduce the load on the API- Server
see: PSR-16 Simple Cache
Development
Contributing
- Fork it ( https://github.com/openfoodfacts/openfoodfacts-php/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Launch test
vendor/bin/phpunit
&& cs-fixervendor/bin/php-cs-fixer fix
- Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Third party applications
If you use this SDK, feel free to open a PR to add your application in this list.