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 मिरर में विलंब होता है। अपग्रेड से पहले चलाएं:
composer config -g --unset repos.packagist