1.6 আপগ্রেড গাইড

আপগ্রেডের আগে ব্যাকআপ নিন এবং নিম্নলিখিত কমান্ডগুলি চালান

composer config -g --unset repos.packagist
composer require -W workerman/webman-framework ^v1.6.11

webman-framework 1.6.0

নতুন বৈশিষ্ট্য

PHP>=8.0 প্রয়োজন

কন্ট্রোলার প্যারামিটার দিয়ে ইনপুট পাওয়ার সমর্থন

<?php
namespace app\controller;
use support\Response;

class UserController
{
    public function create(string $name, int $age, float $balance, bool $vip, array $extension): Response
    {
        return json([
            'name' => $name,
            'age' => $age,
            'balance' => $balance,
            'vip' => $vip,
            'extension' => $extension,
        ]);
    }
}

/user/create?name=tom&age=18&balance=100.5&vip=1&extension[foo]=bar অ্যাক্সেস করে ফলাফল পান

{
  "name": "tom",
  "age": 18,
  "balance": 100.5,
  "vip": true,
  "extension": {
    "foo": "bar"
  }
}

প্যারামিটার মডেল সহ ক্লাস বাইন্ডিং সমর্থন করে

<?php
namespace app\controller;
use app\model\User;
class UserController
{
    public function create(User $user): int
    {
        $user->save();
        return $user->id;
    }
}

কন্ট্রোলার প্যারামিটার বাইন্ডিং দেখুন

কন্ট্রোলার মিডলওয়্যার সমর্থন

<?php
namespace app\controller;
use app\middleware\MiddlewareA;
use app\middleware\MiddlewareB;
use support\Request;
class IndexController
{
    protected $middleware = [
        MiddlewareA::class,
        MiddlewareB::class,
    ];
    public function index(Request $request): string
    {
        return 'hello';
    }
}

Route::fallback()->middleware(...) 4xx রিকোয়েস্টের জন্য সমর্থন

সাধারণত 404 রিকোয়েস্ট কোনো মিডলওয়্যার দিয়ে যায় না। 1.6.0 থেকে 4xx রিকোয়েস্টের জন্য মিডলওয়্যার সেট করা যাবে

Route::fallback(function(){
    return json(['code' => 404, 'msg' => '404 not found']);
})->middleware([
    app\middleware\MiddlewareA::class,
    app\middleware\MiddlewareB::class,
]);

Route::disableDefaultRoute() সমর্থন

Route::disableDefaultRoute();
Route::disableDefaultRoute('', 'admin');
Route::disableDefaultRoute('foo');
Route::disableDefaultRoute('foo', 'admin');
Route::disableDefaultRoute([\app\controller\IndexController::class, 'index']);

নথি

$request->setGet() $request->setPost() $request->setHeader() সমর্থন

$request->get(); // যেমন ['name' => 'tom', 'age' => 18]
$request->setGet(['name' => 'tom']);
$request->get(); // চূড়ান্ত ফলাফল ['name' => 'tom']
$request->setPost();
$request->setHeaders();

নথি

view() টেমপ্লেট প্যারামিটার বাদ এবং পরম পথ সমর্থন করে

<?php
namespace app\controller;
use support\Request;
class UserController
{
    public function hello(Request $request)
    {
        return view(['name' => 'webman']);
    }
}

অন্যান্য কনফিগ পরিবর্তন

config/server.php এর listen কনফিগ config/process.php তে সরানো হয়েছে। শুধুমাত্র নতুন প্রজেক্টকে প্রভাবিত করে।
process ফোল্ডার app/process এ সরানো হয়েছে। শুধুমাত্র নতুন প্রজেক্টকে প্রভাবিত করে।

আপগ্রেড নোট

কোড মানসম্মত না হলে সামঞ্জস্যতার সমস্যা হতে পারে:

view() ব্যবহার পরীক্ষা করুন

view() টেমপ্লেট প্যারামিটার / দিয়ে শুরু কিনা দেখুন। থাকলে / সরান

return view('/user/index');
// এভাবে পরিবর্তন করুন
return view('user/index');

কাস্টম রাউট প্যারামিটার সামঞ্জস্যতা পরীক্ষা করুন

Route::any('/user/{name}', function (Request $request, $myname) {
   return response($myname);
});
// এভাবে পরিবর্তন করুন
Route::any('/user/{name}', function (Request $request, $name) {
   return response($name);
});

নোট: $request প্যারামিটারের আগে Request টাইপ হিন্ট যোগ করুন।

Composer প্রোক্সি বন্ধ করুন

Aliyun এর মতো Composer মিরর delays আছে। আপগ্রেডের আগে চালান:

composer config -g --unset repos.packagist