ชำระเงิน 5.8 คุณสมบัติใหม่ที่น่าตื่นเต้นของ Laravel

เผยแพร่แล้ว: 2022-01-02

Laravel ซึ่งเป็นเฟรมเวิร์ก PHP ที่โดดเด่นซึ่งสร้างโดย Taylor Otwell ในปี 2011 นั้นดีที่สุดในบรรดาเฟรมเวิร์ก PHP ทั้งหมด มันเข้าถึงได้ ทรงพลัง แข็งแกร่ง และสานต่อแอพพลิเคชั่นที่น่าทึ่ง

กรอบงาน PHP นี้อำนวยความสะดวกให้นักพัฒนาใช้รูปแบบ MVC ที่เป็นนามธรรมของฟังก์ชันที่ซับซ้อน การอัปเดตมีความจำเป็นและเพื่อให้วงจรชีวิตแอปพลิเคชันดีขึ้นเท่านั้น

Laravel จะออกการอัปเดตอย่างคร่าว ๆ ทุกๆ 5-6 เดือน และในปีนี้ก็เช่นกัน Laravel ได้เปิดตัวเวอร์ชัน 5.8 (มีนาคม 2019) และไม่พร้อมใช้งาน คุณสามารถจ้างนักพัฒนา Laravel เพื่อทำงานให้เสร็จโดยเร็วที่สุด

การปรับปรุงอย่างต่อเนื่องจากเวอร์ชันก่อนหน้าได้นำคุณลักษณะที่น่าสนใจบางอย่างมาสู่นักพัฒนา มาดูฟีเจอร์อันน่าทึ่งของเวอร์ชั่นใหม่นี้กันดีกว่า

  • การแก้ไขนโยบายอัตโนมัติ
  • รองรับ Carbon 2.0
  • ความสัมพันธ์อันไพเราะแบบหนึ่งผ่าน
  • การป้องกันโทเค็นและการแฮช
  • แคชTTL
  • การกำหนดค่าเขตเวลาของตัวจัดกำหนดการ
  • ช่าง:: ปรับปรุงการโทร
  • วิธีตัวช่วยทดสอบการเยาะเย้ย / สายลับ
  • ช่างฝีมือให้บริการปรับปรุง
  • วิธีการที่มีคารมคมคายที่สูงขึ้น
  • dotenv 3.0
  • ข้อผิดพลาดใหม่ การจัดการแม่แบบ

การแก้ไขนโยบายอัตโนมัติ:

Laravel เวอร์ชันก่อนหน้ามีโมเดลหรือนโยบายในตำแหน่งที่ไม่ธรรมดา และต้องลงทะเบียนในคลาส AuthServiceProvider ในเวอร์ชันนี้ โมเดลและนโยบายจะถูกจัดเก็บไว้ในตำแหน่งทั่วไป

คุณไม่จำเป็นต้องลงทะเบียนนโยบายการให้สิทธิ์ของโมเดลด้วยตนเองอีกต่อไป เวอร์ชันใหม่นี้จะค้นพบนโยบายโดยอัตโนมัติโดยปฏิบัติตามหลักการตั้งชื่อ Laravel มาตรฐาน

หากกรมธรรม์ที่คุณต้องการลงทะเบียนตั้งอยู่ในที่อื่น ให้โทรกลับโดยใช้

ประตู::เดาPolicyNamesUsing

คุณสามารถเรียกวิธีนี้ได้จากวิธีบูธของ AuthServiceProvider ด้วยวิธีต่อไปนี้:

 ใช้ Illuminate\Support\Facades\Gate;
ประตู :: เดาPolicyNamesUsing (ฟังก์ชัน ($ modelClass) {
// คืนชื่อคลาสนโยบาย...
});

การสนับสนุนคาร์บอน 2.0:

ข่าวดีสำหรับนักพัฒนา ตอนนี้คุณสามารถทำให้แอปพลิเคชันของคุณใช้ CarbonImmutable เป็นค่าเริ่มต้นได้

แพ็คเกจนี้ขยายคลาส Date and Time ของ PHP และทำให้การทำงานกับ Date and Time เป็นเรื่องง่าย การเลือกคลาสขึ้นอยู่กับผู้ใช้

HasOneThrough ความสัมพันธ์ที่ไพเราะ:

ฟีเจอร์ใหม่นี้เกือบจะเหมือนกับฟีเจอร์ที่ Rails นำเสนอ มาดูตัวอย่างกัน สมมติว่าเรามีโมเดลสามรุ่น ซัพพลายเออร์ บัญชีและรูปแบบประวัติบัญชี กล่าวง่ายๆ ซัพพลายเออร์มีบัญชีและบัญชีมีประวัติบัญชีเดียว

ในเวอร์ชันก่อนหน้า ในการรับประวัติบัญชีที่เราเคยเขียน: $supplier->account->accountHistory แต่ตอนนี้ผ่านความสัมพันธ์ที่มีวาทศิลป์นี้ คุณจะเขียนทันที

 $history = $supplier->accountHistory

ในรูปแบบบัญชีทั้งหมด

 ฟังก์ชั่นสาธารณะ accountHistory()
{
ส่งคืน $this->hasOneThrough(AccountHistory::class, Account::class);
}

การแฮชโทเค็นยามโทเค็น:

ด้วยคุณสมบัติการป้องกันโทเค็น คุณสามารถบันทึกโทเค็น API เป็นแฮช SHA-256 ได้แล้ว ก่อนหน้านี้ โทเค็นของ API ถูกจัดเก็บเป็นโทเค็นข้อความธรรมดา ซึ่งขณะนี้ได้รับการปรับปรุงแล้ว สิ่งนี้ได้ปรับปรุงความปลอดภัยและการจัดเก็บโทเค็นที่สร้างขึ้น

แคช TTL:

การตั้งค่าแคชจากนาทีเปลี่ยนเป็นวินาทีแล้ว การปรับปรุงนี้ทำขึ้นเพื่อการควบคุมเวลาหมดอายุที่แม่นยำและละเอียดยิ่งขึ้น คุณลักษณะนี้สอดคล้องกับมาตรฐานไลบรารีแคช PSR-16

นอกจากนี้ โปรดจำไว้เสมอเพื่ออัปเดตการแคชแอปพลิเคชันของคุณเป็นวินาที

 // Laravel 5.7 - เก็บไอเทมไว้ 5 นาที...
Cache::put('foo', 'bar', 10);

// Laravel 5.8 - เก็บไอเทมไว้ 5 วินาที...
Cache::put('foo', 'bar', 10);

การกำหนดค่าเขตเวลาของตัวจัดกำหนดการ:

Laravel เวอร์ชันใหม่นี้ให้คุณปรับแต่งเขตเวลาสำหรับงานที่อยู่ในรายการโดยใช้วิธีเขตเวลา

 $schedule->command('run')
->รายวัน()
->ที่('15:00')
->เขตเวลา('อเมริกา/ชิคาโก');

นี่เป็นงานที่ยุ่งยากในเวอร์ชันก่อนหน้า เนื่องจากคุณต้องทำงานตามกำหนดเวลาทุกงาน แต่ด้วยสิ่งนี้ คุณเพียงแค่ต้องกำหนดวิธีการที่เรียกว่า ScheduleTimezone ในไฟล์ app/Console/Kernel.php

จากนั้นการเปลี่ยนแปลงจะแนบมากับตัวจัดกำหนดการทุกรายการในรายการ

 /**
* รับเขตเวลาที่ควรใช้เป็นค่าเริ่มต้นสำหรับกิจกรรมตามกำหนดเวลา
*
* @return \DateTimeZone|string|null
*/
ฟังก์ชันป้องกันกำหนดการเขตเวลา ()
{
ส่งคืน 'อเมริกา/ชิคาโก';
}

การปรับปรุงการโทรโดยช่างฝีมือ:

คุณสามารถสร้างคำสั่ง Artisan โดยใช้วิธี Artisan::call ในเวอร์ชันใหม่นี้ คำสั่งนี้สามารถส่งผ่านเป็นอาร์เรย์ในสตริงเดียวตามที่ระบุด้านล่าง:

 ช่าง::call('migrate:install --database=foo');

การปรับปรุงการให้บริการของ Artisan:

เวอร์ชันก่อนหน้านี้มีพอร์ตเริ่มต้นที่กำหนดใน 8000 ซึ่งแอปพลิเคชันจะทำงาน และถ้าคำสั่งอื่นทำงานบนพอร์ตนี้ มันอาจจะล้มเหลวในการให้บริการคำสั่งใหม่

เวอร์ชันใหม่จะสแกนพอร์ตได้มากถึง 8009 เพื่อให้นักพัฒนาสามารถเรียกใช้แอพพลิเคชั่นหลายตัวพร้อมกันได้

วิธีตัวช่วยทดสอบการเยาะเย้ย / Spy:

การทดสอบจำลองจะช่วยนักพัฒนาในการทำให้โค้ดสะอาดและอ่านได้เท่านั้น เพิ่มวิธีการจำลองและสายลับในคลาสกรณีทดสอบ Laravel พื้นฐาน เมธอดนี้จะผูกคลาสโดยอัตโนมัติเพื่อเยาะเย้ยคอนเทนเนอร์

 ฟังก์ชั่นสาธารณะ testBasicTest()
{
$this->mock(TransactionService::class, ฟังก์ชั่น($mock){
$mock->shouldReceive('find')->once()->with(1)->andReturn(['id' => 1, 'name' => 'foo'])
});
}

ลำดับที่สูงขึ้นหรือวิธีวาทศิลป์:

ในเวอร์ชันก่อนหน้านี้ เราจะกำหนดขอบเขตการค้นหาด้วย "หรือ" ในการเรียกกลับแบบปิด ด้วยการแนะนำวิธีการ "ลำดับที่สูงขึ้น" หรือที่ไหน คุณสามารถเชื่อมโยงการสืบค้นขอบเขตเหล่านี้ร่วมกันได้อย่างง่ายดายโดยไม่ต้องใช้การปิด ตัวอย่างเช่น:

 $users = App\User::emailVerified()->หรือที่ไหน->active()->get();

dotenv 3.0:

ในการจัดการไฟล์ .env ใหม่ของโปรเจ็กต์ของคุณ Laravel 5.8 จะรองรับ dotenv 3.0 ใหม่ dotenv 3.0 ใหม่นี้รองรับสตริงหลายบรรทัดและช่องว่างที่ส่วนท้ายของสตริง คุณลักษณะนี้จะช่วยได้มากในกรณีที่ต้องใช้คีย์ API หลายบรรทัดเพื่อความปลอดภัย

เทมเพลตหน้าข้อผิดพลาดใหม่:

หน้าข้อผิดพลาดใหม่ได้รับการแนะนำด้วยการออกแบบที่เรียบง่ายซึ่งเหมาะสำหรับเว็บไซต์และแอพที่หลากหลาย คุณยังสามารถปรับแต่งหน้าแสดงข้อผิดพลาดหรือนำเข้าหน้าแสดงข้อผิดพลาดที่ออกแบบไว้ก่อนหน้านี้ได้

มีบริษัทพัฒนา Laravel มากมายสำหรับการพัฒนาแอปพลิเคชัน เวอร์ชันใหม่นี้เป็นขุมสมบัติของคุณสมบัติที่น่าทึ่งบางอย่าง เนื้อหาข้างต้นได้แสดงรายการการปรับปรุงและคุณสมบัติเด่นบางประการที่ขยายออกไปในเวอร์ชัน Laravel 5.8 ใหม่

คุณลักษณะบางอย่างสามารถรวมเข้ากับเว็บไซต์ได้อย่างราบรื่นเพื่อให้ใช้งานได้ง่ายและใช้งานง่ายขึ้น

หากต้องการอัปเกรดแอปพลิเคชันที่ทำงานอยู่ของคุณเป็น Laravel เวอร์ชัน 5.8 คุณสามารถดูคู่มือการอัปเกรดและบันทึกย่อประจำรุ่นได้จากเว็บไซต์ทางการ