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

Laravel Keyword Linker Laravel Package

the-3labs-team/laravel-keyword-linker

Laravel Keyword Linker automatically converts configured keywords in your content into links, making internal and affiliate linking easier to manage. Define keywords and target URLs in Laravel and let the package handle link insertion.

View on GitHub
Deep Wiki
Context7

Getting Started

Verify the runtime first. v1.2.0 drops PHP 8.1 — the package now declares support for PHP 8.2, 8.3, and 8.4. If your composer.json still allows ^8.1, either bump the constraint or pin to the previous release before running composer require. Check with:

php -v
composer why-not vendor/package 1.2.0   # explains any blocked constraint

Confirm the Laravel side. Support is documented and verified for Laravel 10, 11, and 12. If you are on Laravel 9 or earlier, this release is not for you.

Then read the README, not the changelog. The substantive change in this release is the README support and installation guidance fix. The previous instructions were wrong or stale in some way, so if you installed an earlier version by following them, re-read them rather than assuming your existing setup matches the documented one.

First use case: prove the install works before writing feature code. The release is primarily a maintenance baseline — refreshed CI, PHPStan on pull requests, Code Climate removed from test gating. That means the package's own test and static-analysis signal is stronger than before, but it also means nothing in your application was verified. Get a green run early:

php artisan test

and, if the package ships migrations or a service provider, confirm discovery picked it up:

php artisan about
php artisan vendor:publish --provider="Vendor\\Package\\PackageServiceProvider"

Only publish config or migrations if the README tells you to — see the Gotchas section.

Implementation Patterns

Treat this as a compatibility bump, not a feature upgrade. No new public API, no config changes, no deprecations beyond the PHP floor. The correct integration pattern is: upgrade the constraint, run the full suite, ship. Do not refactor adjacent code as part of adopting v1.2.0.

Pin the support matrix in CI. Because the package now verifies against three Laravel majors and three PHP minors, mirror that in your own matrix rather than testing one combination:

matrix:
  php: ['8.2', '8.3', '8.4']
  laravel: ['10.*', '11.*', '12.*']

If you only run PHP 8.4 / Laravel 12 in CI, you are relying on the package's matrix to cover the combinations you actually deploy — which is reasonable but worth stating explicitly in a comment so the next person knows why.

Use the package's CI baseline as a template, not a dependency. v1.2.0 moved to actions/checkout@v6, stefanzweifel/git-auto-commit-action@v7, and ramsey/composer-install@v4. If your own workflows still use v3/v5-era actions, this release is a good moment to align them — but do it in a separate PR from the package upgrade so a failing workflow doesn't get mistaken for a broken package.

Upgrade in this order: PHP runtime → package constraint → application test suite → CI matrix. Bumping the package first on a PHP 8.1 runner produces a confusing Composer resolution error that looks like a package problem but is really an environment problem.

If you use Dependabot or Renovate for dependency updates, this release's workflow changes only affect the package's own repo. Your automation is unaffected — except for the auto-merge caveat below.

Gotchas and Tips

PHP 8.1 will fail at install time, not at runtime. The failure surfaces from Composer's platform check, which some developers misread as a missing package. If you're deploying to a container or a shared host, confirm the PHP version of the target environment, not just your local one — php -v on your laptop proves nothing about the production image.

No config changes means: do not republish. A common reflex after any version bump is to re-run vendor:publish --force. Since v1.2.0 introduced no config changes, forcing a republish can only overwrite your local customisations with defaults. Leave your published config alone. If you've never published it, the defaults are fine.

The Code Climate removal is not a signal about code quality. Code Climate was dropped from test gating — meaning it no longer blocks merges on the package's repo. It says nothing about the package's internal quality either way. If you were relying on a Code Climate badge as a rough quality indicator, it may now be stale or absent. Look at the PHPStan-on-PR setup instead; that is the active gate.

PHPStan now runs on pull requests. If you extend or patch this package in a fork, expect your PRs to be held to the static-analysis baseline. Run it locally before pushing:

composer run-script phpstan   # or whatever the composer.json script is named

Check the composer scripts rather than guessing the command name.

Dependabot auto-merge needs a repository setting, not a code change. If you want end-to-end auto-merge of dependency PRs, "Allow auto-merge" must be enabled in the GitHub repository settings (Settings → General). Without it, Dependabot will open PRs and they will simply sit there — a failure mode that is easy to misdiagnose as a broken workflow file.

Troubleshooting order when something breaks after the upgrade:

  1. composer why-not vendor/package 1.2.0 — platform or conflicting constraint.
  2. php -v in the actual runtime environment (container, CI image, deploy target).
  3. composer.lock committed and current — a stale lock can silently keep you on the old version while composer.json claims 1.2.0.
  4. php artisan about — confirm the Laravel version matches one of the three supported majors.
  5. Only then look at the package's own test suite results.

Extension points are unchanged in this release. Because there are no config or API changes, any custom service-provider bindings, macros, or overrides you built against the previous version should carry over untouched. If they don't, the cause is almost certainly your PHP or Laravel version, not the package — verify the environment before debugging your integration code.

Watch for a v1.3.0. This release is a maintenance baseline with a support-matrix declaration. Dropping PHP 8.1 alongside an explicit Laravel 12 verification usually precedes feature work targeting 12-specific APIs. Plan for the possibility that the next minor raises the floor again (Laravel 11+, for instance), and keep your CI matrix configured so that bump is a one-line change rather than a migration.

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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log