- How do I install ibrand/laravel-miniprogram-poster in a Laravel app?
- Install it with Composer via composer require ibrand/laravel-miniprogram-poster, then let Laravel package discovery register the service provider or add it manually to config/app.php along with the facade alias. Publish the package config and any bundled assets with php artisan vendor:publish so you can adjust fonts, paths, and template settings. Because the last tagged release is from February 2019, expect to edit the illuminate/* constraints in a fork before Composer will resolve it on a modern Laravel version.
- Does ibrand/laravel-miniprogram-poster support Laravel 9, 10, or 11 and PHP 8?
- Not out of the box. The last release dates to February 2019, which implies illuminate/* ~5.5 to ~5.7 constraints and PHP 7.x, so installation on Laravel 9, 10, or 11 requires a fork with edited composer.json constraints. You should also budget for small PHP 8 compatibility patches such as removed curly-brace string offsets or each(). Verify config-cache safety and published asset paths after patching, and treat any overtrue/wechat pin as part of that compatibility budget.
- Does the package generate the WeChat mini program code itself or do I supply a pre-fetched image?
- Poster generation for WeChat mini programs depends on the mini program code (小程序码) returned by wxacode.getUnlimited, which means a WeChat SDK and access_token management are involved, typically through a transitive dependency on overtrue/wechat or ibrand/laravel-wechat. Confirm during a spike whether the package calls the WeChat API directly or accepts a pre-fetched code image path, since that decides whether it can share an access_token cache with your existing WeChat client. Also check scene parameter handling, given the 32-character scene limit and code-generation quotas.
- What server requirements does the package need for rendering posters?
- You need the GD extension with FreeType support, or Imagick, plus a writable asset and temporary output path. A CJK font is required for Chinese text and is typically bundled as a large asset. Plan for a PHP memory limit of at least 256 to 512 MB on whichever process renders posters, and make sure WeChat appid and secret credentials are reachable from that process.
- How are poster templates and layouts defined?
- Layouts are defined through the package's publishable configuration and code rather than a database-backed template editor, so the composition of QR code, images, and text is largely fixed by your config. That is fine for a single share-card layout but means per-campaign or per-product layouts require additional config entries or custom code. Check how much of the canvas, coordinates, and typography you can override before committing to the approach.
- Where does the generated poster get written, and what does the method return?
- Output handling depends on the published config, so verify in the spike whether posters are written to a local disk path, object storage such as S3 or OSS, and whether the call returns a path, a URL, or raw binary. For deploys, make sure the target directory survives releases or is a mounted persistent volume. If you need CDN delivery, upload the returned image from your own application code rather than relying on the package.
- Is poster generation synchronous, or can it run in a queue?
- The package composes images in-process, so generation is synchronous unless you wrap it in your own queued job. For share-card workflows triggered by user actions, dispatch a job that calls your wrapper and store the resulting image path on the model. Keep an eye on worker memory ceilings and on WeChat access_token refresh behaviour when many jobs run concurrently.
- Is the bundled CJK font safe to use in production?
- The font assets are large and their provenance and licensing should be verified separately from the MIT-licensed code. The MIT license on the PHP source does not automatically cover a bundled typeface. Before shipping, confirm the font family, its license terms, and whether embedding or redistribution is permitted for your use case, or substitute a font you have licensed yourself.
- Is the package maintained, and does it have tests?
- There has been no release in roughly six years, there are zero dependents, and no observable test suite, so expect no issue triage and no downstream patches to inherit. The functionality itself is not exotic, which lowers the cost of an alternative if forking becomes burdensome. Add at least a smoke test that renders a poster and asserts the output dimensions and file type.
- What are the alternatives if forking ibrand/laravel-miniprogram-poster becomes too costly?
- The same capability can be built natively with maintained libraries such as intervention/image for composition and endroid/qr-code for the code image, or delegated to a hosted image-composition service. To keep that exit path open, do not import ibrand/* from domain code: define an application-owned PosterGenerator interface with a DTO carrying template id, user, product, scene, and output format, and wrap the package behind it. Callers then remain unchanged if you later replace the implementation.