petrknap / shorts
Set of short PHP helpers
Fund package maintenance!
Other
Installs: 92 616
Dependents: 16
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/petrknap/shorts
Requires
- php: >=8.1
Requires (Dev)
- ext-zlib: *
- illuminate/database: *
- nunomaduro/phpinsights: ^2.11
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.7
Suggests
- illuminate/database: Required by IlluminateDatabase testing helper
- phpunit/phpunit: Required by PHP Unit helpers
Conflicts
- illuminate/database: <10.49|>=13
- phpunit/phpunit: <10.5|>=13
README
Exceptions
CouldNotProcessData template
Template for an exception that indicates that the data could not be processed.
interface ImageResizerException extends Throwable {} final class ImageResizerCouldNotResizeImage extends PetrKnap\Shorts\Exception\CouldNotProcessData implements ImageResizerException {} final class ImageResizer { public function resize(string $image) { throw new ImageResizerCouldNotResizeImage(__METHOD__, $image); } }
NotImplemented
Simple exception for prototyping purposes.
final class StringablePrototype implements Stringable { public function __toString(): string { PetrKnap\Shorts\Exception\NotImplemented::throw(__METHOD__); } }
HasRequirements trait
Simple trait to check if requirements of your code are fulfilled.
final class ServiceWithRequirements { use PetrKnap\Shorts\HasRequirements; public function __construct() { self::checkRequirements(functions: ['required_function']); } public function do(): void { required_function(); } }
It should not replace Composers requires,
but it could improve them and check suggests.
Testing
IlluminateDatabase helper
Simple helper which provides logic to test Illuminate\Database without Laravel mess.
$pdo = new PDO('sqlite::memory:'); $pdo->exec('CREATE TABLE tigers (id INTEGER PRIMARY KEY, name VARCHAR)'); $pdo->prepare('INSERT INTO tigers (name) VALUES (?), (?), (?)') ->execute(['Roque', 'Jasper', 'Gopal']); PetrKnap\Shorts\Testing\IlluminateDatabase::createCapsuleManager($pdo) ->bootEloquent(); class Tiger extends Illuminate\Database\Eloquent\Model {} assert(Tiger::count() === 3);
MarkdownFileTest interface + trait
The interface and trait let you automatically test code examples in a Markdown file like README.md.
final class ReadmeTest extends PHPUnit\Framework\TestCase implements PetrKnap\Shorts\PhpUnit\MarkdownFileTestInterface { use PetrKnap\Shorts\PhpUnit\MarkdownFileTestTrait; public static function getPathToMarkdownFile(): string { return __DIR__ . '/../README.md'; } public static function getExpectedOutputsOfPhpExamples(): array { return [ 'some example' => 'has this output', ]; } }
By specifying the file path and expected outputs, the trait runs each code block and checks that its output matches, keeping documentation examples correct and up‑to‑date.
Run composer require petrknap/shorts to install it.
You can support this project via donation.
The project is licensed under the terms of the LGPL-3.0-or-later.