wolfcode/qiniu-php-sdk
A PHP SDK integration for Qiniu cloud storage that simplifies configuring credentials and working with Qiniu services such as object storage and file uploads in PHP and Laravel projects. It streamlines client setup and common operations.
Architecture fit
Storage::disk().QiniuStorage interface + facade, or (b) wrapped in a Flysystem adapter so the app speaks Storage / Storage::temporaryUrl(). Option (b) still confines vendor lock-in to one class.Auth, UploadManager, StorageManager, CDN refresh. New caveat: v8.0.1 is a major-version jump and the release notes disclose nothing, so you can no longer assume those signatures are stable relative to the 0.1.x you may have evaluated. Treat the exact call shapes as unknown until diffed.Integration feasibility
github.com/wolfcode-cn/qiniu-php-sdk), so the tree is now publicly diffable rather than opaque. That converts "unquantified" into "quantifiable in about half a day."replace: qiniu/php-sdk: 8.0.1 while the official package is on 7.x, a transitive dependency requiring qiniu/php-sdk ^7.0 will not be satisfied by the replace and will install the real package alongside it — duplicate Qiniu\* classes, fatal redeclare. Verify the replace/provide constraint semantics, not just their presence.Technical risk — still high; the release did not reduce it, and added a documentation risk
wolfcode ≠ vendor qiniu. A public repo makes review possible; it does not make the package trusted.\Exception with string messages, silent zone auto-resolution.Key questions before approval (revised)
v0.1.2 and v8.0.1, and between v8.0.1 and the corresponding upstream qiniu/php-sdk tag? The repo is public — this is now a concrete, bounded task.replace/provide declare, and does its constraint range actually prevent a co-installed qiniu/php-sdk? Test this with a deliberate transitive dependency in a scratch project.Auth::uploadToken, Auth::privateDownloadUrl, UploadManager::putFile, callback verification?Authorization: QBox callback verification, CDN refresh; signing/provenance attestation on the release artifact.Stack fit
QiniuAdapter (Flysystem) or one ObjectStorage implementation, bound in a service provider, configured from config/filesystems.php with env-backed QINIU_ACCESS_KEY, SECRET_KEY, BUCKET, DOMAIN, REGION.config:cache bakes values at deploy time; secret rotation is a deploy, not a runtime edit. Plan for it.Migration path
v8.0.1 against upstream at the matching tag, confirm autoload namespace, run composer audit, scan for outbound calls beyond *.qiniu.com / *.qiniup.com, and explicitly test the replace constraint in a scratch project with a dependency on qiniu/php-sdk ^7. Gate: mirror verified and no co-install → proceed; otherwise stop and use the official SDK.Compatibility
e.Sequencing
Maintenance
composer why qiniu/php-sdk check to CI to catch a co-installed official package.Support
wolfcode-cn/* in a ticket.Scaling
Failure modes to design for
Authorization: QBox <ak>:<sig>; signed-URL leakage into logs/referrers or CDN caching past expiry; orphaned objects from partial uploads needing a reconciliation job.Qiniu\* classes from a co-installed official package that the replace constraint fails to exclude — a fatal error that appears only when some unrelated dependency adds qiniu/php-sdk ^7.Ramp-up
Recommendation: do not approve on current evidence — but the release improves the feasibility of approval without improving the case. The identified repo makes Phase 0 cheaper and testable; the 0.1.2 → 8.0.1 jump with an empty changelog makes the delta larger and less legible, and the re-baselined version scheme introduces a real co-installation hazard that must be tested, not assumed. Approve a one-to-two-day provenance review that produces (a) a tag-to-tag diff against upstream, (b) a list of breaking changes across the full 0.1.2 → 8.0.1 span, and (c) a scratch-project proof that qiniu/php-sdk cannot be co-installed. If all three pass, adopt with an exact pin and a fork-on-abandon contingency. If any fails, take qiniu/php-sdk and spend the saved effort on the adapter — that is where the durable value is either way.
How can I help you explore Laravel packages today?