Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Shorts Laravel Package

petrknap/shorts

View on GitHub
Deep Wiki
Context7

Set of short PHP helpers

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen