به تازگی نسخه جدید لاراول با شماره ورژن 6.15.1 منتشر شده است که در این مطلب قصد دارم به ویژگی های جدید این نسخه و همچنین سر تیتری از ویژگی هایی که از نسخه 6.12.0 تا اکنون ارائه شده است را برای شما دوستان عزیز قرار بدهم. پس در ادامه با معرفی ویژگی های جدید لاراول (برورزرسانی جدید لاراول) همراه ما باشید.
در هفته جاری تیم توسعه لاراول نسخه 6.15.1 لاراول را برای استفاده عموم منتشر کرد که در این نسخه برخی از مشکلات نسخه های قبلی را با اضافه کردن سطرهایی به لیست artisan برطرف کرده است و متدهای whereNull() و whereNotNull() را به کلاس collection اضافه کرده است و همچنین یک کلاس جدید با نام MockStream به بخش تست (testing) لاراول افزوده است.
سجورز اوتجس (Sjors Ottjes) دو متد جدید به نام های whereNull() و whereNotNull() را به درخواست برخی کاربران به کالکشن ها افزوده است. به کد زیر دقت کنید:
// Already available when building a query
$users = User::whereNotNull('email_verified_at')->get();
// But when you have a collection you have to do the this instead:
$users = User::all();
$unverifiedUsers = $users->whereStrict('is_verified_at', null);
$verifiedUsers = $users->where('is_verified_at', '!==', null);
به کمک این روابط اکنون می توانید کد بالا را به شکل زیر نیز انجام بدهید:
$users = User::all();
$unverifiedUsers = $users->whereNull('is_verified_at');
$verifiedUsers = $users->whereNotNull('is_verified_at');
همچنین آدام پریکت (Adam Prickett) نیز یک کلاس جدید برای تست برنامه ها اضافه کرده است که می توانید به شکل زیر از آن استفاده کنید:
MockStream::register($mock);
$stream = fopen('mock://stream', 'r+');
$consoleOutputSections = [];
$mock->shouldReceive('section')
->andReturn(new ConsoleSectionOutput(
$stream,
$consoleOutputSections,
Output::VERBOSITY_NORMAL,
false,
new OutputFormatter)
);
// ...
MockStream::restore();
درصورتی که دوست دارید لیست کامل تغییرات لاراول 6 (ونسخه 6.15.1) را مشاهده کنید کافیست از لینک زیر استفاده کنید و وارد دکیومنت های لاراول شوید.
نسخه v6.15.1
افزوده شده:
Added whereNull and whereNotNull to Collection (#31425)
Added Illuminate\Foundation\Testing\MockStream class (#31447)
فکیس شده:
Fixed event:list command for shows non-registered events (#31444)
Fixed postgres grammar for nested json arrays with (#31448, b3d0da1)
در نهایت در نسخه های قبل تر یعنی از نسخه 6.12.0 تا اکنون می توان ویژگی های جدید زیر را لیست کرد:
شما اکنون می توانید از یک پکیج مفید برای ایجاد و بازنویسی factories ها استفاده کنید. برای درک بهتر کد زیر را بررسی کنید:
// from a service provider...
$this->loadFactoriesFrom('source/database/factories');
$this->loadFactoriesFrom([
'source_one/database/factories',
'source_two/database/factories',
]);
$response->dumpSession();
$response->dumpSession('example');
$response->dumpSession(['example', 'example2']);
برای استخراج بهتر از خصوصیات ValidatesAttributes به کمک ولیدیت UUIDs:
// Returns true
Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// Returns false
Str::isUuid('laravel');
برای درک بهتر این متد می توانید کد زیر را بررسی کنید:
$request = Request::create('/', 'GET', [
'example1' => 'true',
'example2' => 'false',
'checked' => 1,
'checked2' => '1',
'unchecked' => 0,
'unchecked2' => '0',
'name' => 'Jane Doe'
]);
$request->boolean('example1'); // true
$request->boolean('example2'); // false
$request->boolean('checked'); // true
$request->boolean('checked2'); // true
$request->boolean('unchecked'); // false
$request->boolean('unchecked2'); // false
$request->boolean('name'); // false
حالا می توانید همزمان چندین سطر را به شکل همزمان ایجاد کنید. برای درک بهتر کد زیر را بررسی کنید:
// قبل
factory(User::class)->create([
'name' => 'Taylor',
]);
factory(User::class)->create([
'name' => 'John',
]);
// بعد
factory(User::class)->createMany([
['name' => 'Taylor'],
['name' => 'John'],
]);
برای درک این موضوع کد زیر را بررسی کنید:
// Instead of "0.age must be an integer"
// A formatter could do: "age at line 1 must be an integer"
validator(
[['age' => 'thirty']],
['*.age' => 'integer']
)->setImplicitAttributesFormatter(function ($attribute) {
[$line, $attribute] = explode('.', $attribute);
return sprintf('%s at line %d', $attribute, $line + 1);
})->validate();
از این متد می توانید خیلی ساده و به شکل زیر استفاده کنید:
Filesystem::ensureDirectoryExists($path, $mode = 0755, $recursive = true);
برای درک بهتر نحوه استفاده این رخداد کد زیر را بررسی کنید:
use Illuminate\Auth\Events\Validated;
Event::assertDispatched(Validated::class, function ($event) {
$this->assertSame('web', $event->guard);
$this->assertEquals(1, $event->user->id);
return true;
});
به کمک متد getHttpExceptionView() اگر به یک استثنا دلخواه برای برخی ویوها نیاز دارید میتوانید از یک کلاس فرزند Handler به شکلی که در کد زیر مشاهده می کنید استفاده کنید:
/**
* Get the view used to render HTTP exceptions.
*
* @param \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e
* @return string
*/
protected function getHttpExceptionView(HttpExceptionInterface $e)
{
return "errors::{$e->getStatusCode()}";
}
در نهایت لیست کلیه تغییرات از نسخه 6.12.0 تا 6.15.0 را در زیر برای شما قرار داده ایم:
نسخه: v6.12.0 (2020-01-21)
اضافه شده:
Added ServiceProvider::loadFactoriesFrom() method (#31133)
Added TestResponse::dumpSession() method (#31131)
Added Str::isUuid() method (#31148)
Restored phpunit 7 support (#31113)
Added Request::boolean() method (#31160)
Added Database\Eloquent\FactoryBuilder::createMany() (#31171, 6553d59)
Added missing options for PhpRedis (#31182)
فکیس شده:
Fixed Cache\RedisLock::acquire() (#31168, 8683a3d)
Fixed database url parsing for connections with no database specified (#31185)
Prevent ambiguous column with table name prefix (#31174)
اپتیمایز شده:
Fixed memory usage on downloading large files (#31163)
تغییر یافته:
Replace Event Dispatcher in resolved cache repositories when Event::fake() is used (#31119, 0a70beb)
نسخه: v6.13.0
اضافه شده:
Added --api option to the make:model command (#31197, #31222)
Added PendingResourceRegistration::shallow() method (#31208, 104c539)
Allowed formatting an implicit attribute using a closure (#31246)
Added Filesystem::ensureDirectoryExists() method (8a8eed4)
Added support to Storage::url() for the Ftp driver (#31258, b8790e5)
فکیس شده:
Fixed laravel migrations when migrating to sql server (dropColumn with default value) (#31229)
Fixed handleBeginTransactionException() method calling pdo property instead of getPdo() method (#31233)
Fixed channel names when broadcasting via redis (#31261)
Replace asterisks before validation (#31257)
تغییر یافته:
Reset timeout handler after worker loop (#31198)
نسخه: v6.14.0
اضافه شده:
Added Illuminate\Bus\Dispatcher::dispatchAfterResponse() method (#31300, 8a3cdb0)
Added Illuminate\Support\Testing\Fakes\QueueFake::assertPushedWithoutChain() method (#31332, 7fcc6b5)
Added Macroable trait to the Illuminate\Events\Dispatcher (#31317)
Added NoPendingMigrations event (#31289, 739fcea)
فکیش شده:
Used current DB to create Doctrine Connections (#31278)
Removed duplicate output when publishing tags in vendor:publish command (#31333)
Fixed plucking column name containing a space (#31299)
Fixed bug with wildcard caching in event dispatcher (#31313)
Fixed infinite value for RedisStore (#31348)
Fixed dropping columns in SQLServer with default value (#31341)
تغییر یافته:
Use SKIP LOCKED for mysql 8.1 and pgsql 9.5 queue workers (#31287)
Dont merge middleware from method and property in Illuminate\Bus\Queueable::middleware() (#31301)
Split specifyParameter() from Illuminate\Console\Command to HasParameters trait (#31254)
Make sure changing a database field to json does not include charset (#31343)
نسخه: v6.15.0
اضافه شده:
Added Illuminate\Auth\Events\Validated event (#31357, 7ddac28)
Make Blueprint support Grammar’s macro (#31365)
Added Macroable trait to Illuminate\Console\Scheduling\Schedule class (#31354)
Added support dispatchAfterResponse in BusFake (#31418, e59597f)
Added Illuminate\Foundation\Exceptions\Handler::getHttpExceptionView() (#31420)
Allowed appending of rows to Artisan tables (#31426)
فیکس شده:
Fixed locks for sqlsrv queue (5868066)
Fixed Illuminate\Events\Dispatcher::hasListeners() (#31403, c80302e)
Fixed testing with unencrypted cookies (#31390)
تغییر یافته:
Allowed multiple paths to be passed to migrate fresh and migrate refresh commands (#31381)
Split Console InteractsWithIO to external trait (#31376)
Added sms link as valid URL in UrlGenerator::isValid() method (#31382)
Upgrade CommonMark and use the bundled table extension (#31411)
Ensure Application::$terminatingCallbacks are reset on Application::flush() (#31413)
Remove serializer option in PhpRedisConnector::createClient() (#31417)
نظر شما چیست؟ شما می توانید نظرات ،پیشنهادات و اطلاعات خود را در رابطه با این مطلب و موضوعات مربوط از طریق قسمت نظرات با ما و سایر بازدیدکنندگان در میان بگذارید.