sebastian/diff
Standalone PHP diff library extracted from PHPUnit. Generate textual diffs between strings with configurable output builders (unified, strict unified, diff-only) or custom formats, and parse unified diffs into an object model for further processing.
php artisan diff:config).dd()/dump() with custom diff output for complex data structures (e.g., nested arrays, JSON responses).assertDiff() helper).DiffOutputBuilderInterface enables custom formatting (e.g., HTML diffs for admin panels, colored diffs for Tinker).sebastian/diff).DiffService to centralize Differ/Parser instances (e.g., for dependency injection into controllers/commands).Diff facade for fluent syntax (e.g., Diff::generate($old, $new)).@diff directives for frontend diff visualization.Parser to compare SQL queries or migration files against live schemas (e.g., php artisan diff:schema).UnifiedDiffOutputBuilder and LCS calculators requires auditing all diff usages in the codebase. Mitigate by:
StrictUnifiedDiffOutputBuilder.StrictUnifiedDiffOutputBuilder) or human-readable HTML (custom builder)?UnifiedDiffOutputBuilder alias) during transition?PHPUnit\Framework\Assert::assertStringEqualsFile() with Differ for structured failure messages.diff:config (compare config/ between environments).diff:migrations (compare SQL between runs).diff:views (highlight Blade template changes).diff() helper for interactive debugging:
diff($oldArray, $newArray); // Returns colored diff in Tinker
@diff directives for inline diff visualization.UnifiedDiffOutputBuilder (deprecated in v9+).str_diff, array_diff_recursive).StrictUnifiedDiffOutputBuilder (default) or DiffOnlyOutputBuilder (minimal output).// app/Services/DiffService.php
class DiffService {
public function generate(string $old, string $new): string {
return app(Differ::class)->diff($old, $new);
}
}
DiffOutputBuilderInterface for custom formats (e.g., HTML for admin panels).sebastian/diff.sebastian/diff is standalone; no overlapping dependencies with Laravel.php artisan diff:database).| Priority | Task | Dependencies | Estimated Effort |
|---|---|---|---|
| Critical | Audit all diff usages | None | 2–4 hours |
| Critical | Replace UnifiedDiffOutputBuilder |
Audit results | 1–2 hours |
| High | Create DiffService facade |
Core Laravel setup | 1 hour |
| High | Add Artisan diff:config command |
Service facade | 2 hours |
| Medium | Benchmark Myers’ vs. LCS | Sample payloads (API responses, configs) | 4 hours |
| Medium | Implement custom HTML builder | Frontend integration needs | 3 hours |
| Low | Cache parsed Git diffs in CI | CI pipeline setup | 2 hours |
| Low | Deprecate legacy diff utilities | All replacements complete | 1 hour |
How can I help you explore Laravel packages today?