PHPackages                             banulakwin/laravel-support-helpers - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. banulakwin/laravel-support-helpers

ActiveLibrary[Caching](/categories/caching)

banulakwin/laravel-support-helpers
==================================

Small Laravel helpers: public/storage image URLs and production-only flexible cache wrapper.

1.0.2(3w ago)00MITPHPPHP ^8.4CI passing

Since May 17Pushed 3w agoCompare

[ Source](https://github.com/banulalakwindu/laravel-support-helpers)[ Packagist](https://packagist.org/packages/banulakwin/laravel-support-helpers)[ Docs](https://github.com/banulalakwindu/laravel-support-helpers)[ RSS](/packages/banulakwin-laravel-support-helpers/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (8)Versions (3)Used By (0)

Laravel Support Helpers (`banulakwin/laravel-support-helpers`)
==============================================================

[](#laravel-support-helpers-banulakwinlaravel-support-helpers)

[![Latest Version on Packagist](https://camo.githubusercontent.com/d465b14b80a1768942d3de77947965a3ef207065d96e49166bc8636f9b588a60/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f62616e756c616b77696e2f6c61726176656c2d737570706f72742d68656c706572732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/banulakwin/laravel-support-helpers)[![Tests](https://github.com/banulalakwindu/laravel-support-helpers/actions/workflows/tests.yml/badge.svg)](https://github.com/banulalakwindu/laravel-support-helpers/actions/workflows/tests.yml)[![Total Downloads](https://camo.githubusercontent.com/ce0875b50e97714e85379b2eb06fdc02c131548d07bff04e7f42836ff3a16f00/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f62616e756c616b77696e2f6c61726176656c2d737570706f72742d68656c706572732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/banulakwin/laravel-support-helpers)[![License](https://camo.githubusercontent.com/942e017bf0672002dd32a857c95d66f28c5900ab541838c6c664442516309c8a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e7376673f7374796c653d666c61742d737175617265)](LICENSE)

**Image URL resolution** (storage disk + public assets + placeholders) and a **production-only `Cache::flexible()`** wrapper—delivered as **contracts**, **services**, **facades**, and **global helpers** (helpers delegate to the container, so behaviour stays consistent).

---

Requirements
------------

[](#requirements)

- PHP `^8.4` (uses `mb_trim` / `mb_ltrim`)
- Laravel `illuminate/*` `^11.0|^12.0|^13.0` (cache, filesystem, support)

---

Installation
------------

[](#installation)

Auto-discovery registers `Banulakwin\SupportHelpers\SupportHelpersServiceProvider`.

```
composer require banulakwin/laravel-support-helpers
```

Optional publish (customize placeholders, disk, stale window):

```
php artisan vendor:publish --tag=support-helpers-config
```

Config keyPurpose`image.disk`Filesystem disk for `storageImage` / `resolvedPublicImage`. Env: `SUPPORT_HELPERS_IMAGE_DISK`.`image.placeholder_base`Prefix for `defaultPlaceholder` / `assetImage` when no image. Env: `SUPPORT_HELPERS_PLACEHOLDER_BASE`.`image.avatar_placeholder_base`Prefix when avatar file missing. Env: `SUPPORT_HELPERS_AVATAR_PLACEHOLDER_BASE`.`cache.flexible_stale_extra_seconds`Seconds after the fresh window for the flexible stale bound. Env: `SUPPORT_HELPERS_CACHE_STALE_EXTRA` (default `300`).**Facades** (optional): `PublicImage`, `FlexibleCache` (see `composer.json` `extra.laravel.aliases`).

---

Architecture (recommended for apps)
-----------------------------------

[](#architecture-recommended-for-apps)

LayerRole**`Banulakwin\SupportHelpers\Contracts\PublicImage`**Swap or mock image behaviour in tests / custom apps.**`Banulakwin\SupportHelpers\Services\PublicImageService`**Default implementation (`final`; inject `FilesystemFactory` + `ConfigRepository`).**`Banulakwin\SupportHelpers\Contracts\FlexibleCache`**Contract for flexible-cache strategy.**`Banulakwin\SupportHelpers\Services\FlexibleCacheService`**Default: `rememberFlexible()` + `shouldUseFlexibleCache()` (production only). `final` in this repo after Pint—**rebind the contract** with your own class if you need different rules (e.g. cache on `staging`).**Helpers**Thin `app(Contract::class)->…` wrappers for Blade and legacy call sites.**Binding your own implementation** (e.g. in `AppServiceProvider`):

```
use Banulakwin\SupportHelpers\Contracts\PublicImage;
use App\Support\CustomPublicImage;

$this->app->singleton(PublicImage::class, CustomPublicImage::class);
```

Or implement the contract yourself (or wrap the default service) and bind that to the contract.

**Prefer in application code:** constructor injection of `PublicImage` or `FlexibleCache` (or facades if you accept hidden dependencies).

---

Global functions (delegate to services)
---------------------------------------

[](#global-functions-delegate-to-services)

### Images

[](#images)

FunctionDelegates to`defaultPlaceholder()``PublicImage::defaultPlaceholder()``StorageImage(...)``PublicImage::storageImage(...)``normalizePublicRelativePath($path)``PublicImage::normalizePublicRelativePath($path)``ResolvedPublicImage($path)``PublicImage::resolvedPublicImage($path)``AssetImage(...)``PublicImage::assetImage(...)`### Cache

[](#cache)

FunctionDelegates to`CacheData($key, $ttl, $callback)``FlexibleCache::rememberFlexible(...)`---

Testing
-------

[](#testing)

```
composer test          # Run PHPUnit
composer pint          # Fix code style
composer phpstan       # Static analysis
composer quality       # Run all (pint + phpstan + test)
```

---

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for details.

---

Contributing
------------

[](#contributing)

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/your-feature`)
3. Run `composer quality` to ensure tests and style pass
4. Commit and push
5. Open a pull request

---

Package layout
--------------

[](#package-layout)

```
config/support-helpers.php
src/Contracts/PublicImage.php
src/Contracts/FlexibleCache.php
src/Services/PublicImageService.php
src/Services/FlexibleCacheService.php
src/Facades/PublicImage.php
src/Facades/FlexibleCache.php
src/SupportHelpersServiceProvider.php
src/helpers.php

```

---

License
-------

[](#license)

MIT — see [LICENSE](LICENSE) for details.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance95

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

23d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/64958389?v=4)[Banula Lakwindu](/maintainers/banulalakwindu)[@banulalakwindu](https://github.com/banulalakwindu)

---

Top Contributors

[![banulalakwindu](https://avatars.githubusercontent.com/u/64958389?v=4)](https://github.com/banulalakwindu "banulalakwindu (3 commits)")

---

Tags

laravelhelpersimagecachestorageplaceholder

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/banulakwin-laravel-support-helpers/health.svg)

```
[![Health](https://phpackages.com/badges/banulakwin-laravel-support-helpers/health.svg)](https://phpackages.com/packages/banulakwin-laravel-support-helpers)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

9782.1M153](/packages/laravel-ai)[spatie/laravel-responsecache

Speed up a Laravel application by caching the entire response

2.8k8.7M64](/packages/spatie-laravel-responsecache)[moonshine/moonshine

Laravel administration panel

1.3k239.9k72](/packages/moonshine-moonshine)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9732.3M121](/packages/roots-acorn)[propaganistas/laravel-disposable-email

Disposable email validator

6012.9M7](/packages/propaganistas-laravel-disposable-email)[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
