ชำระเงิน 5.8 คุณสมบัติใหม่ที่น่าตื่นเต้นของ Laravel
เผยแพร่แล้ว: 2022-01-02Laravel ซึ่งเป็นเฟรมเวิร์ก 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 คุณสามารถดูคู่มือการอัปเกรดและบันทึกย่อประจำรุ่นได้จากเว็บไซต์ทางการ
