mll-lab / php-utils
Shared PHP utility functions of MLL
Requires
- php: ^7.4 || ^8
- ext-calendar: *
- ext-simplexml: *
- illuminate/support: ^8.73 || ^9 || ^10 || ^11 || ^12
- mll-lab/str_putcsv: ^1
- nesbot/carbon: ^2.62.1 || ^3
- ramsey/uuid: ^3 || ^4
- thecodingmachine/safe: ^1 || ^2 || ^3
Requires (Dev)
- ergebnis/composer-normalize: ^2.45
- jangregor/phpstan-prophecy: ^1.0.2 || ^2.1.1
- larastan/larastan: ^1.0.4 || ^2.9.14 || ^3.1
- mll-lab/graphql-php-scalars: ^6.4
- mll-lab/php-cs-fixer-config: ^5.10
- orchestra/testbench: ^6.47.1 || ^7.52 || ^8.33 || ^9.11 || ^10
- phpoffice/phpspreadsheet: ^1.2 || ^5.1
- phpstan/extension-installer: ^1
- phpstan/phpstan: ^1.8.11 || ^2.1.6
- phpstan/phpstan-deprecation-rules: ^1 || ^2.0.1
- phpstan/phpstan-phpunit: ^1 || ^2.0.4
- phpstan/phpstan-strict-rules: ^1 || ^2.0.3
- phpunit/phpunit: ^9.6.22 || ^10.5.45 || ^11.5.10 || ^12.0.5
- rector/rector: ^1.2.10 || ^2.0.9
- spaze/phpstan-disallowed-calls: ^2 || ^4.4
- thecodingmachine/phpstan-safe-rule: ^1.2.0
Suggests
- mll-lab/graphql-php-scalars: To use the provided scalar types for GraphQL servers, requires version ^6.3
- phpoffice/phpspreadsheet: Required if using QiaxcelImport
- spaze/phpstan-disallowed-calls: Required when using the PHPStan configuration from rules.neon directly or through the extension installer
Provides
None
Conflicts
None
Replaces
None
- dev-master
- v6.16.0
- v6.15.0
- v6.14.0
- v6.13.3
- v6.13.2
- v6.13.1
- v6.13.0
- v6.12.0
- v6.11.0
- v6.10.0
- v6.9.1
- v6.9.0
- v6.8.0
- v6.7.0
- v6.6.1
- v6.6.0
- v6.5.1
- v6.5.0
- v6.4.0
- v6.3.0
- v6.2.0
- v6.1.0
- v6.0.0
- v5.25.0
- v5.24.0
- v5.23.1
- v5.23.0
- v5.22.0
- v5.21.0
- v5.20.0
- v5.19.1
- v5.19.0
- v5.18.0
- v5.17.0
- v5.16.0
- v5.15.0
- v5.14.0
- v5.13.0
- v5.12.1
- v5.12.0
- v5.11.0
- v5.10.0
- v5.9.0
- v5.8.0
- v5.7.0
- v5.6.0
- v5.5.2
- v5.5.1
- v5.5.0
- v5.4.0
- v5.3.0
- v5.2.0
- v5.1.0
- v5.0.0
- v4.1.0
- v4.0.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.2.0
- v2.1.0
- v2.0.0
- v1.14.0
- v1.13.0
- v1.12.0
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.1
- v1.8.0
- v1.7.0
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
- dev-AE-5676-bclconvert-4-4-10
- dev-ignore-legacy-dev-advisories
- dev-ban-carbon-immutable
- dev-one-thing-per-line-phpstan-rule
- dev-43-enable-php-81-features-with-backward-compatibility
- dev-canonical-capitalization-rule
- dev-AE-543-ica-client
- dev-illumina-sample-sheet-v1-next
This package is auto-updated.
Last update: 2026-10-12 13:53:08 UTC
README
Shared PHP utility functions of MLL
Installation
Install through composer
composer require mll-lab/php-utils
Usage
See tests.
SafeCast
PHP's native type casts like (int) and (float) can produce unexpected results, especially when casting from strings.
The SafeCast utility provides safe alternatives that validate input before casting:
Each type has two variants:
toX(): returns the cast value or throws\InvalidArgumentExceptiontryX(): returns the cast value ornull(likeEnum::tryFrom())
use MLL\Utils\SafeCast; // Safe integer casting SafeCast::toInt(42); // 42 SafeCast::toInt('42'); // 42 SafeCast::toInt('hello'); // throws InvalidArgumentException SafeCast::tryInt('hello'); // null // Safe float casting SafeCast::toFloat(3.14); // 3.14 SafeCast::toFloat('3.14'); // 3.14 SafeCast::toFloat('abc'); // throws InvalidArgumentException SafeCast::tryFloat('abc'); // null // Safe string casting SafeCast::toString(42); // '42' SafeCast::toString(null); // '' SafeCast::tryString([1, 2]); // null // Safe boolean casting SafeCast::toBool(true); // true SafeCast::toBool(1); // true SafeCast::toBool('0'); // false SafeCast::toBool('true'); // throws InvalidArgumentException SafeCast::tryBool('true'); // null
See tests for more examples.
Holidays
You can add custom holidays by registering a method that returns a map of holidays for a given year. Set this up in a central place that always runs before your application, e.g. a bootstrap method.
use MLL\Holidays\BavarianHolidays; BavarianHolidays::$loadUserDefinedHolidays = static function (int $year): array { switch ($year) { case 2019: return ['22.03' => 'Day of the Tentacle']; default: return []; } };
Custom holidays have precedence over the holidays inherent to this library.
PHPStan extension
This library provides a PHPStan extension that is either registered through PHPStan Extension Installer
or registered manually by adding the following to your phpstan.neon:
includes: +- vendor/mll-lab/php-utils/extension.neon +- vendor/mll-lab/php-utils/rules.neon
Requires spaze/phpstan-disallowed-calls.
Changelog
See CHANGELOG.md.
Contributing
See CONTRIBUTING.md.
License
This package is licensed using the MIT License.