ezsystems/ezpublish-kernel
eZ Publish Kernel is the core of the eZ Publish/eZ Platform CMS, providing the content repository, field types, search integration, and services for building and extending PHP-based content applications with a modular, API-driven architecture.
Monolithic vs. Modular: The ezsystems/ezpublish-kernel is a core component of eZ Platform, a legacy CMS built on Symfony. It provides a repository layer (Doctrine ORM), MVC framework, and REST API, making it a highly integrated, monolithic solution for content management.
Content, Location).Key Abstractions:
ContentRepository, SearchService). Laravel’s Eloquent is not interchangeable.Controller, Templating, and Routing—incompatible with Laravel’s RouteServiceProvider, Blade, or Controller conventions.FOSRestBundle or ApiPlatform—not natively Laravel-compatible (though could be wrapped in a Laravel API layer).symfony/bridge to embed Symfony (and eZ kernel) as a Laravel service provider.Http client.| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Dependency Conflicts | High | Isolate eZ kernel in a separate Symfony app or use symfony/bridge carefully. |
| ORM Incompatibility | High | Avoid direct ContentRepository usage; prefer REST/API calls. |
| Event System Clashes | Medium | Use Laravel’s events alongside eZ’s (if bridged), but expect namespace collisions. |
| Legacy Codebase | High | Requires deep Symfony/eZ knowledge; not ideal for Laravel-first teams. |
| Performance Overhead | Medium | Bridging Symfony adds ~20-30% startup time; test under load. |
Content/Location model be mapped to Laravel’s Eloquent? (Unlikely without heavy customization.)| Laravel Component | eZ Publish Kernel Fit | Integration Strategy |
|---|---|---|
| Routing | Low | Use Symfony’s Routing via bridge or proxy eZ’s REST endpoints. |
| Controllers | Medium | Wrap eZ controllers in Laravel middleware or use API clients. |
| ORM (Eloquent) | None | Avoid direct use; consider read-only replicas or database views. |
| Templating (Blade) | Low | Render eZ content via REST API → Blade or use Symfony’s Twig. |
| Authentication | Medium | Leverage eZ’s Symfony Security or build a custom Laravel guard. |
| Queues/Jobs | Low | Offload eZ tasks to Laravel queues via API calls. |
| API (Lumen/Sanctum) | Medium | Expose eZ’s REST API and gate it with Laravel auth. |
ezsystems/ezpublish-kernel in a Laravel service provider.// app/Providers/EzPublishProvider.php
use Symfony\Component\HttpKernel\KernelInterface;
class EzPublishProvider extends ServiceProvider {
public function register() {
$this->app->singleton(KernelInterface::class, function ($app) {
return new EzPublishKernel('prod', false);
});
}
}
Http client or GraphQL for content queries.$content = Http::get('http://ez-platform/api/content/123')->json();
composer.json constraints).symfony/console, symfony/http-kernel).ezcontentobject, ezcontentobject_attribute).laravel-modules/versionable).EventDispatcher conflicts).How can I help you explore Laravel packages today?