slime-systems/php-slime
A lightweight PHP package from Slime Systems for working with slime-related data and utilities. Simple to install and integrate into existing PHP projects, it offers a small, focused API for common tasks.
v0.0.1 is the initial tagged release of slime-systems/php-slime. The release notes contain only an auto-generated changelog link, so there is no documented feature set, upgrade path, or API surface to work from yet. Treat this as a "read the source first" package rather than a "read the docs" package.
First steps:
name field in the package's composer.json and install with that exact string (composer require <vendor>/<package>). On a 0.0.x tag, also confirm the constraint Composer resolves — if the package declares no minimum-stability, a bare require may fail until you add "minimum-stability": "dev" / "prefer-stable": true or pin explicitly (composer require <vendor>/<package>:^0.0.1).src/*ServiceProvider.php, a Facades/ directory, a config/ directory, and a boot()/register() pair. If a provider exists but is not listed in the package's extra.laravel.providers, you must register it yourself in bootstrap/providers.php (Laravel 11+) or config/app.php (Laravel 10 and below). If no provider exists, the package is likely a plain PHP library with no container bindings and no publishable config.tests/ is the most reliable description of intended usage — it shows constructor signatures, expected inputs, and exception cases in executable form.php artisan tinker before wiring anything into a controller or job. Resolve the class from the container (app(SomeClass::class)) to verify bindings work, then call the smallest public method with a trivial argument.Best first use case: isolate one happy-path operation behind a thin service class of your own, so if the API shifts in 0.1.0 you have a single seam to update.
Because 0.0.1 establishes no stability contract, the dominant pattern is adapter-wrapping: keep the package at arm's length from your application code.
Wrap behind your own interface. Define an app-level contract (app/Contracts/SlimeClient.php) and a single implementation that delegates to the package. Inject the contract, never the vendor class. This is cheap now and turns a breaking 0.1.0 into a one-file change.
Bind in a service provider with explicit config. Register the binding in your own AppServiceProvider rather than relying on auto-resolution, so you control constructor arguments and can swap in a fake during tests:
$this->app->singleton(SlimeClient::class, fn ($app) => new PackageSlimeClient(
config('services.slime.key'),
));
Keep credentials in config/services.php under a slime key and reference them via env() only in config files — never call env() from package-adjacent code, since it returns null once configs are cached.
Verify config publishing exists before assuming it does. If the package ships a config file, publish with php artisan vendor:publish --provider="Vendor\Package\ServiceProvider" --tag=config and commit the result. If it does not ship one, define your own config file and pass values into the constructor — do not edit files inside vendor/.
Queue and HTTP boundaries. Any package call that performs I/O should sit inside a job with an explicit $tries, backoff(), and failed() handler, not inline in a request cycle. On a 0.0.x release you have no documented timeout or retry semantics, so assume none and enforce them yourself.
Pin hard and upgrade deliberately. Use an exact or tight constraint ("0.0.1" or "^0.0.1"), and commit composer.lock. Schedule a read of the diff between 0.0.1 and the next tag before bumping — pre-1.0 semver permits breaking changes in the minor position, and 0.0.x permits them anywhere.
0.0.1 may not be API-stable in any sense. Semver reserves the 0.0.x range for rapid iteration; method names, namespaces, and constructor signatures can change between patches. Do not build a wide surface area against it until you have seen at least one subsequent release confirm the shape.extra.laravel metadata is common in first tags. If php artisan package:discover does not list the package, it means no auto-registration — register the provider manually and note it in your upgrade checklist.slime-systems/php-slime does not tell you the PHP namespace. Confirm the autoload.psr-4 mapping in composer.json; a wrong guess produces confusing "class not found" errors that look like install failures.composer require failing on stability is the single most likely first-run error. Fix with an explicit version constraint or a minimum-stability adjustment rather than reaching for --ignore-platform-reqs, which masks real problems.try/catch (\Throwable $e) and report($e) while you learn the failure modes. Check whether the package throws its own exception types or bubbles up bare \RuntimeException — this determines how you handle errors in production.ext-curl, ext-json, ext-sodium) not listed in require. Run composer check-platform-reqs in CI to catch this before deploy.protected methods, or a Contracts/ directory — if none exist, composition (your adapter) is the only safe extension mechanism.git diff v0.0.1..v0.0.2 -- src/) rather than trusting release notes; the auto-generated changelog link in this release suggests notes may stay sparse.0.0.1 with a changelog-only note is an early-stage signal. Keep the integration behind your adapter and avoid making it load-bearing for critical paths until the package shows sustained activity.How can I help you explore Laravel packages today?