แพ็คเกจ Composer สำหรับ PHP ที่เพิ่มคุณสมบัติ enum ที่เป็นประโยชน์ให้กับ PHP Enum ประเภทใหม่อันรุ่งโรจน์
แพ็คเกจจนถึงตอนนี้มีให้;
UnitEnum::valueArray(): array
ที่ส่งคืนค่าทั้งหมดภายใน Enum เป็นอาร์เรย์ที่พิมพ์เท่ากันของค่า EnumUnitEnum::valueList(string $separator = ', '): string
ที่ส่งคืนค่าทั้งหมดภายใน Enum เป็นสตริงรายการที่คั่นด้วยเครื่องหมายจุลภาคแพคเกจนี้มีอยู่ใน Packagist ในรูปแบบ othyn/php-enum-enhancements
เข้าสู่โปรเจ็กต์ของคุณที่คุณต้องการติดตั้งและรันคำสั่ง Composer ต่อไปนี้เพื่อรับเวอร์ชันล่าสุด:
composer require othyn/php-enum-enhancements
หากต้องการตัวอย่างการใช้งานที่ครอบคลุมมากขึ้น คุณสามารถดูชุดทดสอบได้ อย่างไรก็ตาม ฉันจะแสดงตัวอย่างการใช้งานพื้นฐานด้านล่าง
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestEnum
{
use EnumEnhancements;
case Alpha;
case Bravo;
case Charlie;
case Delta;
case Echo;
}
var_dump (TestEnum:: valueArray ());
// Results in the following being printed:
// array(5) {
// [0]=>
// string(5) "Alpha"
// [1]=>
// string(5) "Bravo"
// [2]=>
// string(7) "Charlie"
// [3]=>
// string(5) "Delta"
// [4]=>
// string(4) "Echo"
// }
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestEnum
{
use EnumEnhancements;
case Alpha;
case Bravo;
case Charlie;
case Delta;
case Echo;
}
var_dump (TestEnum:: valueList ());
// Results in the following being printed:
// string(34) "Alpha, Bravo, Charlie, Delta, Echo"
var_dump (TestEnum:: valueList (separator: ' : ' ));
// Results in the following being printed:
// string(30) "Alpha:Bravo:Charlie:Delta:Echo"
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestStringBackedEnum: string
{
use EnumEnhancements;
case Alpha = ' alpha ' ;
case Bravo = ' bravo ' ;
case Charlie = ' charlie ' ;
case Delta = ' delta ' ;
case Echo = ' echo ' ;
}
var_dump (TestStringBackedEnum:: valueArray ());
// Results in the following being printed:
// array(5) {
// [0]=>
// string(5) "alpha"
// [1]=>
// string(5) "bravo"
// [2]=>
// string(7) "charlie"
// [3]=>
// string(5) "delta"
// [4]=>
// string(4) "echo"
// }
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestStringBackedEnum: string
{
use EnumEnhancements;
case Alpha = ' alpha ' ;
case Bravo = ' bravo ' ;
case Charlie = ' charlie ' ;
case Delta = ' delta ' ;
case Echo = ' echo ' ;
}
var_dump (TestStringBackedEnum:: valueList ());
// Results in the following being printed:
// string(34) "alpha, bravo, charlie, delta, echo"
var_dump (TestStringBackedEnum:: valueList (separator: ' : ' ));
// Results in the following being printed:
// string(30) "alpha:bravo:charlie:delta:echo"
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestIntBackedEnum: int
{
use EnumEnhancements;
case One = 1 ;
case Two = 2 ;
case Three = 3 ;
case Four = 4 ;
case Five = 5 ;
}
var_dump (TestIntBackedEnum:: valueArray ());
// Results in the following being printed:
// array(5) {
// [0]=>
// int(1)
// [1]=>
// int(2)
// [2]=>
// int(3)
// [3]=>
// int(4)
// [4]=>
// int(5)
// }
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestIntBackedEnum: int
{
use EnumEnhancements;
case One = 1 ;
case Two = 2 ;
case Three = 3 ;
case Four = 4 ;
case Five = 5 ;
}
var_dump (TestIntBackedEnum:: valueList ());
// Results in the following being printed:
// string(13) "1, 2, 3, 4, 5"
var_dump (TestIntBackedEnum:: valueList (separator: ' : ' ));
// Results in the following being printed:
// string(9) "1:2:3:4:5"
กระบวนการพัฒนาส่วนใหญ่รวมอยู่ในคอนเทนเนอร์ Docker ที่ใช้งานง่าย
การกำหนดค่าโปรเจ็กต์ .php-cs-fixer.dist.php
มีกฎที่ repo นี้ปฏิบัติตามและจะรันกับไดเร็กทอรี ./src
และ ./tests
สำหรับการบังคับใช้รูปแบบระยะไกล จะมี GitHub Action ที่กำหนดค่าให้รัน phpcsfixer
โดยอัตโนมัติ
สำหรับการบังคับใช้สไตล์ท้องถิ่น จะมี composer style
ที่กำหนดค่าให้รัน phpcsfixer
สำหรับการทดสอบระยะไกล จะมีการตั้งค่า GitHub Action เพื่อรันชุดการทดสอบในสาขา main
หรือสาขา PR โดยอัตโนมัติ
สำหรับการทดสอบในพื้นที่ จะมีคอนเทนเนอร์ Docker ที่สร้างไว้ล่วงหน้าซึ่งมี PHP + PHPUnit + xdebug รุ่น Alpine CLI นี่คือการตั้งค่าเพื่อทดสอบโปรเจ็กต์และสามารถตั้งค่าได้ดังต่อไปนี้:
composer docker-build
สิ่งนี้ควรกระตุ้นให้ Docker Compose สร้างอิมเมจ จากนั้นคุณสามารถอัปคอนเทนเนอร์ได้ด้วยวิธีต่อไปนี้:
composer docker-up
มีการทดสอบโค้ดทั้งหมดที่เขียน ซึ่งสามารถรันผ่าน:
# PHPUnit with code coverage report
composer test
# PHPUnit with code coverage report, using local phpunit and xdebug
composer test-local
ในการทดสอบเหล่านั้น มีการทดสอบคุณสมบัติสำหรับการนำแพ็คเกจไปใช้จริง ยังไม่มีการทดสอบหน่วยในปัจจุบัน
คุณยังสามารถเปิดเชลล์ในคอนเทนเนอร์ทดสอบได้อย่างง่ายดายโดยใช้คำสั่ง:
composer docker-shell
การเปลี่ยนแปลงโครงการใดๆ สำหรับการเผยแพร่ควรได้รับการบันทึกไว้ด้านล่าง การกำหนดเวอร์ชันเป็นไปตามมาตรฐาน SemVer
[การเปลี่ยนแปลง Git] การเปลี่ยนแปลง README
var_dump
แทนเพื่อแสดงประเภทผลลัพธ์ภายในอาร์เรย์ที่ส่งคืนจาก UnitEnum::valueArray()
UnitEnum
ภายในเอกสารในตัวอย่างโค้ดที่ไม่มีการทดสอบ Enum [การเปลี่ยนแปลง Git] การเปิดตัวครั้งแรก