yanick-k / images-faker-lorem
Reliable Lorem.Space image provider for FakerPHP.
Package info
github.com/Yanick-K/fakerphp-lorem-space-provider
pkg:composer/yanick-k/images-faker-lorem
Requires
- php: ^8.2
- fakerphp/faker: ^1.23
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^10.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Reliable Lorem.Space image provider for FakerPHP.
The package adds Faker formatters that generate Lorem.Space URLs or download the generated image into a local directory.
Requirements
- PHP 8.2 or higher
fakerphp/faker- cURL extension recommended for downloads.
allow_url_fopenis supported as a fallback.
Install
composer require yanick-k/fakerphp-lorem-space-provider
Usage
use Faker\Factory; use Lorem\Faker\LoremSpaceProvider; $faker = Factory::create(); $faker->addProvider(new LoremSpaceProvider($faker)); $url = $faker->loremSpaceUrl(LoremSpaceProvider::CATEGORY_FACE); // https://api.lorem.space/image/face?w=640&h=480 $path = $faker->loremSpace( LoremSpaceProvider::CATEGORY_FACE, __DIR__ . '/tmp', 320, 320 );
API
loremSpaceUrl(string $category, int $width = 640, int $height = 480): string
Returns a Lorem.Space image URL.
Width and height are clamped to Lorem.Space limits:
- minimum:
8 - maximum:
2000
loremSpace(string $category, ?string $dir = null, int $width = 640, int $height = 480, bool $fullPath = true): string|false
Downloads the image and returns the saved path.
$dirdefaults tosys_get_temp_dir()$fullPath = falsereturns only the generated filename- returns
falsewhen the remote download fails - throws
InvalidArgumentExceptionfor invalid categories, non HTTP(S) URLs, or unwritable directories
Downloads are written to a temporary .part file first, validated as images, then moved into place.
Categories
Use constants from LoremSpaceProvider instead of hard-coded strings:
LoremSpaceProvider::CATEGORY_MOVIE; LoremSpaceProvider::CATEGORY_GAME; LoremSpaceProvider::CATEGORY_ALBUM; LoremSpaceProvider::CATEGORY_BOOK; LoremSpaceProvider::CATEGORY_FACE; LoremSpaceProvider::CATEGORY_FASHION; LoremSpaceProvider::CATEGORY_AI; LoremSpaceProvider::CATEGORY_DASHBOARD; LoremSpaceProvider::CATEGORY_CRM; LoremSpaceProvider::CATEGORY_FINANCE; LoremSpaceProvider::CATEGORY_CALENDAR; LoremSpaceProvider::CATEGORY_MESSENGER; LoremSpaceProvider::CATEGORY_SHOES; LoremSpaceProvider::CATEGORY_WATCH; LoremSpaceProvider::CATEGORY_FURNITURE; LoremSpaceProvider::CATEGORY_PIZZA; LoremSpaceProvider::CATEGORY_BURGER; LoremSpaceProvider::CATEGORY_DRINK; LoremSpaceProvider::CATEGORY_CAR; LoremSpaceProvider::CATEGORY_HOUSE;
You can also inspect them dynamically:
$categories = LoremSpaceProvider::categories();
Development
composer install composer check
Individual checks:
composer cs
composer analyse
composer test
Security and reliability
The downloader only accepts HTTP(S), follows at most three redirects, verifies TLS when cURL is available, applies a 10 second timeout, caps downloads to 20 MB, and validates that the received file is an image before returning it.
License
MIT