ekipower/symfony-helper
Lightweight helper package for Symfony projects by Ekipower. Provides utilities to streamline common tasks and reduce boilerplate. Minimal public docs; check source for available helpers, usage patterns, and licensing details.
Install the Package:
composer require ekipower/symfony-helper
Note: Expect dependency conflicts with Laravel’s Symfony components (e.g., illuminate/http vs. symfony/http-foundation). Resolve via Composer’s replace or runtime checks.
Identify Framework-Agnostic Helpers:
Scan the package’s src/ directory for stateless utilities (e.g., StringHelper, ArrayHelper). Prioritize these for immediate use.
First Use Case: String Manipulation
Replace Laravel’s Str:: with Symfony’s stricter helpers (if needed):
use Ekipower\SymfonyHelper\Helper\StringHelper;
$slug = (new StringHelper())->slugify('Hello World!'); // Symfony-style slug
Symfony-Specific Helpers:
For FormHelper or RequestHelper, create a Laravel wrapper (see Implementation Patterns).
Create Laravel-compatible facades for Symfony helpers to avoid direct coupling:
// app/Providers/SymfonyHelperServiceProvider.php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Ekipower\SymfonyHelper\Helper\FormHelper;
use Illuminate\Http\Request;
class SymfonyHelperServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton('symfony.form', function () {
return new FormHelper(
new LaravelRequestAdapter($this->app['request'])
);
});
}
}
// app/Helpers/LaravelRequestAdapter.php
namespace App\Helpers;
use Ekipower\SymfonyHelper\Helper\RequestInterface;
use Illuminate\Http\Request;
class LaravelRequestAdapter implements RequestInterface
{
public function __construct(private Request $request) {}
public function get($key, $default = null)
{
return $this->request->input($key, $default);
}
// Implement other RequestInterface methods...
}
Use runtime checks to avoid Symfony dependency conflicts:
if (class_exists('Symfony\Component\HttpFoundation\Request')) {
// Use Symfony helper
$helper = new \Ekipower\SymfonyHelper\Helper\FormHelper();
} else {
// Fallback to Laravel
$helper = new \App\Helpers\LaravelFormHelper();
}
Extend Laravel’s validator with Symfony-style rules:
use Ekipower\SymfonyHelper\Helper\ValidatorHelper;
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($data, [
'email' => ['required', function ($attribute, $value, $fail) {
(new ValidatorHelper())->isValidEmail($value)
or $fail('The '.$attribute.' must be a valid email.');
}]
]);
If the package uses Symfony’s EventDispatcher, create a Laravel-compatible bridge:
// app/Providers/EventServiceProvider.php
protected $listen = [
'symfony.event' => [
\App\Listeners\SymfonyEventListener::class,
],
];
RequestInterface).HttpTestCase to test wrapped helpers.
public function testSymfonyFormHelper()
{
$response = $this->post('/submit', ['name' => 'Test']);
$response->assertSessionHasNoErrors();
}
Dependency Conflicts:
ClassNotFoundException for Symfony\Component\HttpFoundation\Request.replace or runtime checks (see Implementation Patterns).Service Container Mismatch:
ContainerInterface errors when injecting Symfony services.ServiceProvider.Undocumented Assumptions:
FormHelper expects Symfony’s ParameterBag).Performance Overhead:
spatie/laravel-profiling and replace heavy helpers.Lack of Laravel Integration:
RouteServiceProvider or Auth.LaravelRouteAdapter for Symfony’s Router).if (class_exists('Symfony\Component\Debug\Debug')) {
\Symfony\Component\Debug\Debug::enable();
}
\Log::debug('Using Symfony helper', ['helper' => 'FormHelper']);
dd() for Symfony Objects:
Dump Symfony objects to inspect their structure before adapting them to Laravel.config/symfony-helper.php. Create one to override defaults:
// config/symfony-helper.php
return [
'default_locale' => 'en_US',
'form_validation' => [
'strict_email' => true,
],
];
Add Laravel-Specific Helpers:
Extend the package’s StringHelper with Laravel-specific methods:
namespace Ekipower\SymfonyHelper\Helper;
class StringHelper extends \Illuminate\Support\Str
{
public function laravelSlugify($string)
{
return parent::slug($string);
}
}
Create a Laravel Facade:
// app/Facades/SymfonyHelper.php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class SymfonyHelper extends Facade
{
protected static function getFacadeAccessor()
{
return 'symfony.form';
}
}
Usage:
use App\Facades\SymfonyHelper;
$form = SymfonyHelper::createForm();
Publish Assets:
If the package includes views or assets, publish them to Laravel’s resources:
php artisan vendor:publish --provider="Ekipower\SymfonyHelper\SymfonyHelperServiceProvider"
ArrayHelper) before tackling Symfony-specific ones.README.md in your repo explaining Laravel-Symfony mappings.Str:: instead of StringHelper).How can I help you explore Laravel packages today?