Moving from Laravel to StrataPHP? This guide covers routes, Eloquent, middleware, and Blade. Migrating from Slim or Lumen instead? Use the sidebar to switch guides
You don't have to rewrite everything. StrataPHP speaks PSR standards, so most Laravel code ports directly.
Laravel and StrataPHP both use closure-based routing. Syntax is 95% the same.
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store'])
->middleware('auth');
$router->get('/users', [UserController::class, 'index']);
$router->post('/users', [UserController::class, 'store'])
->middleware($auth);
Change: `Route::` becomes `$router->`. Middleware is PSR-15, not strings.
No changes. Laravel controllers are plain PHP classes. Copy them over.
namespace App\Http\Controllers;
class UserController
{
public function index() {
return ['users' => User::all()]; // Works in StrataPHP
}
}
Option A: Keep Eloquent
composer require illuminate/database
Boot it in `config/database.php`. All your models work unchanged.
Option B: Switch to strataphp/database
composer require strataphp/database
use StrataPHP\Database\Query;
$users = Query::table('users')->where('active', 1)->get();
Laravel middleware implements PSR-15. It works in StrataPHP with zero changes.
namespace App\Http\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class AuthMiddleware implements MiddlewareInterface
{
public function process(
ServerRequestInterface $request,
RequestHandlerInterface $handler
): ResponseInterface {
// Your Laravel auth logic here
return $handler->handle($request);
}
}
Option A: Keep using Blade
composer require illuminate/view
Option B: Switch to Plates - recommended
composer require league/plates
Plates uses pure PHP. No compiling, no cache.
Use StrataPHP for new API routes. Keep Laravel for old web routes.
// public/index.php
if (str_starts_with($_SERVER['REQUEST_URI'], '/api/v2')) {
require 'strataphp/public/index.php'; // StrataPHP
} else {
require 'laravel/public/index.php'; // Laravel
}
What you gain: ~40ms faster per request, no hidden behavior, smaller vendor folder.
Stuck on a specific migration? Ask in Discord. We’ve migrated 3 Laravel apps to StrataPHP so far.
This guide covers basic Laravel apps. If you use Horizon, Nova, or Livewire heavily, migration is harder. StrataPHP is best for APIs and custom apps, not Laravel SPA clones.