| Install | |
|---|---|
composer require petrknap/shorts |
|
| Latest Version: | v3.3.0 |
| PHP: | >=8.1 |
CouldNotProcessData templateTemplate 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);
}
}
NotImplementedSimple exception for prototyping purposes.
final class StringablePrototype implements Stringable {
public function __toString(): string {
PetrKnap\Shorts\Exception\NotImplemented::throw(__METHOD__);
}
}
HasRequirements traitSimple 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.
IlluminateDatabase helperSimple 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 + traitThe 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.