تحذير إذا كنت تستخدم PHP 8.1 أو أعلى ، فإننا نوصيك باستخدام التعدادات الأصلية PHP بدلاً من هذه الحزمة.
قد نقوم بإصدار بعض تصحيحات الصيانة ولكن يتم إيقاف دعم هذه الحزمة.
لا تتردد في توتر الكود لدينا وتكييفه مع احتياجاتك.
توفر هذه المكتبة تنفيذ التعداد / التعداد لـ PHP.
map() . قم أولاً بإنشاء فئة جديدة تمتد RexlabsEnumEnum وافعل ما يلي ؛
map() : <?php
namespace Rexlabs Enum Readme ;
use Rexlabs Enum Enum ;
/**
* Class City
*
* @package RexlabsEnumReadme
*
* @method static static BRISBANE()
* @method static static MELBOURNE()
* @method static static SYDNEY()
*/
class City extends Enum
{
const BRISBANE = ' Brisbane ' ;
const MELBOURNE = ' Melbourne ' ;
const SYDNEY = ' Sydney ' ;
// OPTIONAL - Provide a map() method if you would like to
// map additional data, which will be available from the ->value() method
public static function map (): array
{
return [
self :: BRISBANE => [ " state " => " QLD " , " population " => "" ],
self :: MELBOURNE => [ " state " => " VIC " , " population " => " 5m " ],
self :: SYDNEY => [ " state " => " NSW " , " population " => " 5m " ],
];
}
}
// Static access
echo City:: BRISBANE ; // "Brisbane"
echo City:: MELBOURNE ; // "Melbourne"
City:: names (); // (array)["BRISBANE", "BRISBANE", "SYDNEY"]
City:: keys (); // (array)["Brisbane", "Melbourne", "Sydney"]
City:: keyForName ( ' BRISBANE ' ); // "Brisbane"
City:: nameForKey ( ' Melbourne ' ); // "MELBOURNE"
City:: isValidKey ( ' Sydney ' ); // (boolean)true
City:: isValidKey ( ' Paris ' ); // (boolean)false
// Getting an instance - all return a City instance.
$ city = City:: BRISBANE ();
$ city = City:: instanceFromName ( ' BRISBANE ' );
$ city = City:: instanceFromKey ( ' Brisbane ' );
// Working with an instance
$ city -> name (); // "BRISBANE"
$ city -> key (); // "Brisbane"
$ city -> value ()[ ' population ' ]; // null - no value mapped
$ city -> is (City:: BRISBANE ); // (boolean)true
$ city -> is (City:: BRISBANE ()); // (boolean)true
$ city -> is (City:: SYDNEY ()); // (boolean)false
$ city -> isNot (City:: SYDNEY ()); // (boolean)true
$ city -> isAnyOf ([City:: BRISBANE ()]); // (boolean)true
$ city -> isNoneOf ([City:: BRISBANE ()]); // (boolean)false
// Or ...
City:: SYDNEY ()-> key (); // "Sydney"
City:: SYDNEY ()-> value (); // (array)["state"=>"NSW", "population"=>"5m"] للتثبيت في مشروعك:
composer require rexlabs/enum يمكنك الآن كتابة كائن Enum الخاص بك باعتباره تبعية:
<?php
function announceCity ( City $ city ) {
echo "{ $ city -> key ()} is located in { $ city -> value ()[ " state " ]} , population: { $ city -> value ()[ " population " ]}n" ;
}
// Get a new instance
announceCity (City:: SYDNEY ()); // "Sydney is located in NSW, population: 5m" يوفر كل مثيل من Enum الطرق التالية:
إرجاع الاسم الثابت.
$ enum -> name (); إرجاع القيمة/المفتاح المعين إلى الثابت في إعلان const MY_CONST = 'key' .
$ enum -> key (); إرجاع القيمة (if-iny) التي يتم تعيينها (في الصفيف الذي تم إرجاعه بواسطة map() ). إذا لم يتم تعيين قيمة ، فإن هذه الطريقة تُرجع null .
$ enum -> value ();إرجاع صحيح إذا كان هذا المثيل هو نفسه المفتاح الثابت أو مثيل التعداد المعطى.
$ enum -> is (City:: SYDNEY ); // Compare to constant key
$ enum -> is (City:: SYDNEY ()); // Compare to instance يتم تعريف طريقة __toString() لإرجاع الاسم الثابت.
( string )City:: SYDNEY (); // "SYDNEY" إرجاع صفيف يقوم بتخطيط المفاتيح الثابتة إلى القيمة. يمكن تنفيذ هذه الطريقة اختياريًا في فئة فرعية. يقوم التنفيذ الافتراضي بإرجاع مجموعة من المفاتيح المعينة إلى null .
إرجاع مجموعة من مثيلات التعداد.
إرجاع مجموعة من المفاتيح الثابتة.
إرجاع مجموعة من القيم المحددة في map() . إذا لم يتم تنفيذ map() ، فسيتم إرجاع مجموعة من القيم الخالية.
إرجاع مجموعة من جميع الأسماء الثابتة المعلنة مع الفصل.
إرجاع مجموعة نقاطية من مفتاح constant_name => ، لجميع الأسماء الثابتة المعلنة في الفصل.
إرجاع المفتاح للاسم الثابت المعطى.
إرجاع الاسم الثابت للمفتاح المحدد (عكس keyForName ).
إرجاع القيمة (أو الفارغ إذا لم يتم تعيينها) للمفتاح المحدد (كما أعلن في طريقة map() ).
إرجاع المفتاح للقيمة المحددة (كما أعلن في طريقة map() ).
ملاحظة: إذا تم تضمين القيم المكررة داخل طريقة
map()، فسيتم إرجاع المفتاح الأول فقط.
إنشاء مثيل لهذا التعداد من الاسم الثابت المعطى.
إنشاء مثيل لهذا التعداد من المفتاح المعطى.
إرجاع صحيح إذا كان المفتاح المعطى موجود.
إرجاع صحيح إذا تم الإعلان عن الاسم الثابت المعطى (حساس للحالة) في الفصل.
يلقي RexlabsEnumExceptionsInvalidKeyException إذا لم يكن المفتاح المحدد موجودًا.
لتشغيل الاختبارات:
composer testsلتشغيل تقرير التغطية:
composer coverage تقرير التغطية هو الإخراج إلى ./tests/report/index.html
المساهمات موضع ترحيب ، يرجى تقديم طلب سحب أو إنشاء مشكلة. يجب تنسيق الرمز المقدم باستخدام معايير PSR-1/PSR-2.