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

Weixin Laravel Package

socialiteproviders/weixin

Adds Weixin (WeChat) OAuth login to Laravel Socialite. Install via Composer, configure your WeChat app ID and secret, then authenticate users through the Weixin provider with a familiar Socialite workflow.

View on GitHub
Deep Wiki
Context7

Getting Started

Release 4.1.0 is an additive compatibility release: it adds PHP 8 support without an indicated breaking API change. Start by confirming your environment and the package’s new constraints.

  1. Check PHP and Composer constraints:
    php -v
    composer why-not php 8.0
    composer require vendor/package:^4.1 --with-all-dependencies
    
  2. Read the package README install section and composer.json first — look for the service provider, facade, published config tag, and migration tag.
  3. Publish only what you need:
    php artisan vendor:publish --tag=package-config
    php artisan vendor:publish --tag=package-migrations
    
  4. Verify discovery and configuration:
    php artisan package:discover
    php artisan config:clear
    
  5. First use case: resolve the package’s main entry point from the container in php artisan tinker or a throwaway route, call its simplest read-only method, and confirm the published config values are being read:
    $service = app(Vendor\Package\Contracts\Service::class);
    dump($service->healthCheck());
    

If you are already on PHP 8, treat 4.1.0 as a low-risk upgrade, but still run your application’s test suite and any package-specific integration tests before deploying.

Implementation Patterns

Constructor injection over facades in application code. Resolve the package’s contracts through Laravel’s container so tests can swap fakes and so long-running workers do not hold stale facade roots:

final class SyncOrders
{
    public function __construct(
        private readonly Vendor\Package\Contracts\Client $client,
    ) {}

    public function __invoke(): void
    {
        $this->client->sync();
    }
}

Configuration-driven setup. Keep package options in config/package.php, drive environment-specific values through .env, and ensure the config file contains no closures if you use php artisan config:cache.

Wrap package calls in application boundaries. Put package calls behind a small application service or action class. This keeps package-specific types out of controllers, Livewire components, and domain models, and makes future upgrades easier.

Use jobs and events for anything remote. If the package performs HTTP calls, file operations, or writes to external systems, dispatch it from a queued job and use the package’s events or your own events for follow-up work. Combine with DB::transaction() only when the package operation is part of a database workflow.

Exploit PHP 8 syntax in integrations, not in assumptions about the package. Constructor property promotion, named arguments, union types, and match expressions are useful in your own adapters. Do not rely on named arguments when calling package methods unless the package explicitly documents parameter names as stable API.

Testing pattern. Use RefreshDatabase for database-backed packages, Http::fake() and Queue::fake() where appropriate, and bind a fake implementation of the package contract in the container:

$this->app->instance(
    Vendor\Package\Contracts\Client::class,
    new FakePackageClient(),
);

CI matrix. Since this release targets PHP 8, run your test suite against the PHP versions you actually deploy on (for example 8.1–8.3) rather than assuming “PHP 8” means all 8.x versions behave identically.

Gotchas and Tips

  • “Supports PHP 8” is not the same as “supports every PHP 8.x release.” Check the package’s composer.json php constraint and any transitive dependencies. Use composer why-not php 8.0 or composer why-not php 8.3 to diagnose resolution failures.
  • Watch for PHP 8.2+ deprecations. Dynamic properties, utf8 encoding changes, and implicit nullable parameter deprecations may surface as notices even when the package advertises PHP 8 support. Run with error_reporting(E_ALL) in development.
  • Clear caches after upgrading. Run php artisan config:clear, php artisan cache:clear, and composer dump-autoload after changing the package version. Stale bootstrap/cache files are a common source of confusing behaviour.
  • Config caching and env(). If the package’s config file calls env() outside the config directory, or if you cache config after changing .env, values may not update as expected.
  • Facade state in Octane and queue workers. Facades cache resolved instances. In long-running processes, prefer dependency injection or call Facade::clearResolvedInstance() between requests/jobs when package state is request-specific.
  • Named arguments are a compatibility risk. PHP 8 named arguments make parameter names part of the call site. Avoid them for package methods unless the package documents them as stable.
  • Debugging discovery issues. If the package’s service provider is not registered, check bootstrap/cache/packages.php, run php artisan package:discover, and confirm the package’s extra.laravel.providers entry.
  • Extension points. Prefer publishing config, binding custom implementations of the package’s contracts, and listening to package events over subclassing vendor classes. Subclassing internal classes makes minor releases harder to absorb.
  • Upgrade hygiene. Because 4.1.0 is primarily a compatibility release, pin with a caret constraint (^4.1) and review the changelog again before moving to 5.x. Run your integration tests against the new version in a branch before merging.
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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource