- Can I use Boris with Laravel 9+ and PHP 8.2+?
- Boris was last updated in 2015 and may not fully support PHP 8.x or Laravel 9+. It relies on deprecated functions like `create_function`, which could break. Test it in a non-production environment first, or consider forking and updating the core REPL loop for compatibility.
- How do I install Boris in a Laravel project?
- Run `composer require d11wtq/boris` to install. Launch it with `vendor/bin/boris` or bootstrap Laravel’s context using `boris --bootstrap=bootstrap/app.php`. Ensure `composer dump-autoload` is run afterward to resolve PSR-4 autoloading issues.
- Does Boris support Laravel’s service container or Eloquent models?
- Boris can inspect objects like `User::find(1)` or `Route::list()`, but it lacks direct integration with Laravel’s service container (`$app->make()`) or advanced features like event listeners or queue jobs. Use it for basic object inspection, but avoid complex Laravel-specific workflows.
- Why should I use Boris instead of Laravel’s built-in `tinker` or `psysh`?
- Boris offers a lightweight REPL for quick PHP experimentation, but it’s outdated compared to `psysh` (actively maintained) or Laravel’s `tinker` (Laravel-native). If you need Laravel-specific features or PHP 8+ support, `psysh` or `tinker` are safer alternatives.
- Will Boris work in production or CI/CD environments?
- No, Boris is not designed for production or CI/CD. It lacks security hardening, audit logging, and may fail due to PHP version or dependency conflicts. Use it only for local development or debugging.
- How do I debug a failed Laravel queue job using Boris?
- Boris can inspect job payloads or objects in memory, but it won’t interact with Laravel’s queue system directly. Manually load the job class (e.g., `new YourJob()`) and inspect its properties, but avoid relying on it for queue-specific logic.
- Does Boris support Laravel’s Blade components or collect() helpers?
- No, Boris is a generic PHP REPL and doesn’t natively support Laravel’s Blade syntax or `collect()` helpers. Use it for raw PHP or Eloquent code, but switch to Laravel’s `tinker` or a browser for Blade-related tasks.
- How can I check if Boris respects Laravel’s `APP_ENV` or `APP_DEBUG` settings?
- Boris doesn’t automatically load Laravel’s environment variables. Manually set them in the REPL (e.g., `putenv('APP_ENV=local')`) or use the `--bootstrap` flag to load `bootstrap/app.php`, which initializes Laravel’s environment checks.
- Are there any security risks using Boris in a shared development environment?
- Yes, Boris is an unmaintained package with potential vulnerabilities like arbitrary code execution via REPL input. Avoid using it in shared or production environments. Restrict usage to trusted local setups and disable it in `.env` checks if possible.
- What’s the best way to migrate from Boris to a more modern REPL like `psysh`?
- Replace `boris` with `psysh` by running `composer require bobwebb/psysh`. Use `psysh` with Laravel’s bootstrap (`psysh -de bootstrap/app.php`) for seamless integration. Test critical workflows (e.g., Eloquent queries, Artisan commands) to ensure compatibility before full adoption.