PHP is getting more and more features. Enumerations in PHP are one of the latest proposals. Description for enumerations in PHP is described withing this request for comments
Enumerations are built on top of classes and objects. That means, except where otherwise noted, “how would Enums behave in situation X” can be answered “the same as any other object instance.”
They would, for example, pass an object
type check. Similarly, enum names and case names are both case insensitive. (With the same caveat about autoloading on case sensitive file systems that already applies to classes generally.)
For example, we could start by defining class like enum Suit
with various cases, i.e. case Hearts
enum Suit {
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
Then we utilize defined cases by calling them like Suit::Diamonds;
If we would have, for example, a function pick_a_card
which accepts one attribute Suit $suit
we could provide any enum value from enum Suit. However, if we would try to provide direct string value, this woudl throw a TypeError, because of strong typing.
$val = Suit::Diamonds;
function pick_a_card(Suit $suit) { ... }
// OK
pick_a_card($val);
// OK
pick_a_card(Suit::Clubs);
// throws TypeError
pick_a_card('Spades');
If you are interested in the current state of this feature implementation you can find it here https://github.com/php/php-src/pull/6489/files
Personal note: I believe enum types would be a great fit for PHP, especially taken into account the strongly typed direction in which PHP moves since 7.x versions.
I was attending the Symfony 2020 conference and there was one great lecture about PHP 8.0 and new features including JIT. I wrote an article about insights I got from this lecture called What is new in PHP 8.0: SymfonyWorld 2020
This article is about the code review best practices. It explains code review from the… Read More
API design is an important aspect of modern software development. It allows different systems to… Read More
This article sheds some light related to the question will ChatGPT or AIs in general… Read More
This article provides an overview of new features and deprecations in PHP 8.2. PHP 8.0… Read More
This article is about Automation and Artificial Intelligence in Software Engineering: Experiences, Challenges, and Opportunities.… Read More
This article writes about what is new in PHP 8.0. These are personal notes related… Read More