Changes and fixes in Laravel 11

প্রথমবার 11.x প্রজেক্ট ক্রিয়েট করে কিছুটা মন খারাপ হয়ে যেতে পারে । প্রজেক্ট স্কেলেটনে api route নেই, channels route নেই, Middleware ডিরেক্টরি খুজে পাচ্ছি না , অতি প্রয়োজনীয় karnel.php ফাইলটি কোথায়? Exceptions ফোল্ডারটিও মিসিং ।

ফার্স্ট ইম্প্রেশনে মনে হলো 11.x থেকে কি ফিচার গুলো বাদ পরে গেলো? কিন্তু ঘাটা-ঘাটি করতে করতে সব কনফিউশন ক্লিয়ার । Laravel 11.x আসছে slimmer application skeleton নিয়ে , কমে যাচ্ছে বয়লার-প্লেট কোড ।

11.x আগের থেকে আরও বেশি ডেভেলপার এবং লার্নার ফ্রেন্ডলি । আশা করি আর্টিকেলটি 11.x এর চেঞ্জেস এবং সমাধান খুজতে আপনাদের হেল্প করবে।

⬛ Laravel 11 এর জন্য PHP ভার্সন থাকতে হবে 8.2 এর উপরে । এখনো লারাভেল অফিসিয়াল ডকে 11.x যুক্ত হয়নি , আপনি dev-master থেকে নিচের কম্পোজার কমান্ড দিয়ে লারাভেল ১১ প্রজেক্ট ক্রিয়েক্ট করতে পারেন ।

composer create-project –prefer-dist laravel/laravel laravel-dev dev-master

⬛ routes ডিরেক্টরিতে api.php ফাইলটি 11.x এ থাকছে না । চিন্তার কারন নেই API রাউট আগের থেকে ডেভেলপার ফ্রেন্ডলি হয়েছে । ম্যানুয়ালি Sanctum যুক্ত করার ঝামেলা থাকছে না । ডিফল্ট Sanctum Authentication এবার API Route এর সাথে বাইন্ড থাকছে। নিচের কম্পোজার কমান্ড ফলো করুন —

php artisan install:api 

⬛ ব্রডকাষ্টিং এর জন্য routes ডিরেক্টরিতে channels.php রাউট ফাইলটিও 11.x এ সরাসরি পাচ্ছেন না। ফাইল নেই মানে ফিচার বাদ পরে গেছে, এমন কিছু নয়। নিচের কমান্ডটি ফলো করুন।

php artisan install:broadcasting

⬛ 11.x প্রজেক্ট তৈরি করেই আপনি কনফিউজড হয়ে যেতে পারেন Middleware ডিরেক্টরি খুজে পাচ্ছেন না । আপনি যে কোনো একটি Middleware তৈরি করলেই ডিরেক্টরি তৈরি হয়ে যাবে। রেগুলার Middleware নিয়ে আগে যেভাবে কাজ করতেন, যেভাবেই চলতে থাকবে ।

php artisan make:Middleware AuthMiddleware

⬛ karnel.php ফাইলটি কোথায়? ২য় কনফিউশন শুরু……… 11.x থেকে এই ফাইলটির আর প্রয়োজন নেই । প্রজেক্টে bootstrap/app.php ফাইলের মধ্যেই পুর্বের karnel.php এর মত Web/API route group এ Middleware যুক্ত করতে পারবেন। bootstrap/app.php ফাইলে গিয়ে নিচের উদাহরণটি ফলো করুন ।

->withMiddleware(function (Middleware $middleware) {
// Adding Middleware alias
        $middleware->alias([
            ‘my_auth’ => \App\Http\Middleware\AuthMiddleware::class,
        ]);
        // Or adding multiple
        $middleware->append([
            \App\Http\Middleware\AuthMiddleware::class,
            \App\Http\Middleware\AuthMiddleware::class,
        ]);
        // Or adding multiple in web group
        $middleware->appendToGroup(‘web’, [
            \App\Http\Middleware\AuthMiddleware::class,
            \App\Http\Middleware\AuthMiddleware::class,
        ]);
        // Or adding multiple in api group
        $middleware->appendToGroup(‘api’, [
            \App\Http\Middleware\AuthMiddleware::class,
            \App\Http\Middleware\AuthMiddleware::class,
        ]);
    })

 

⬛ পুর্বে app\Exceptions এই পাথে Handler.php ফাইলটিও 11.x থেকে পাচ্ছেন না। যদি প্রয়োজন হয় আপনি একটি Exception Handling ক্লাস তৈরি করলেই ফোল্ডার পেয়ে যাবেন। Exception ক্লাস তৈরি করতে নিচের কমান্ড ব্যাবহার করুন-

php artisan make:exception CustomException

 

⬛ Controllers ডিরেক্টরিতে Controller.php বেইজ ক্লাসে AuthorizesRequests , ValidatesRequests এই ২টি ট্রেইটস ডিফল্ট পাচ্ছেন না। ট্রেইটস দরকার হলে নিচের উদাহরণ ফলো করুন

namespace App\Http\Controllers;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Laravel\Telescope\AuthorizesRequests;
abstract class Controller
{
    use AuthorizesRequests, ValidatesRequests;
}

 

⬛ পুর্বে Middleware ডিরেক্টরিতে ডিফল্ট ‘EncryptCookies,’ ‘PreventRequestsDuringMaintenance.php,’ ‘TrimStrings,’ ‘TrustHosts,’ ‘TrustProxies,’ ‘ValidateCsrfToken’ and ‘ValidateSignature’ middleware এই Middleware গুলো পেতেন। 11.x থেকে পাচ্ছেন না , চিন্তার কোনো কারন নেই, আপনি যে কোনো Middleware থেকেই বিল্ড-ইন সুবিধা গুলো নিতে নিচের উদাহরণ ফলো করুন ।

namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfMiddleware extends Middleware
{
    protected $except = [
//
    ];
}

 

Thank You (Nurul Islam)