db
db copied to clipboard
Enum cases support for build query
What steps will reproduce the problem?
$query->andWhere(['category_name' => CategoryEnum::blablacat])
What is the expected result?
Am want suggest add logic to query for transformate enum case object to case->value
$query->andWhere(['category_name' => CategoryEnum::blablacat->value])
What do you get instead?
this suggestion
Additional info
| Q | A |
|---|---|
| Version | 3.x? |
| PHP version | 8.x+ |
| Operating system | any |
к ознакомлению https://php.watch/versions/8.1/enums
я тут узнал, что можно оказывается методы засовывать в енум, и так же не запрещено вешать интерфейсы и метод __toString не запрещен в енумах, в связи с новыми входными данными, возможно рассмотреть превращение не UnitCase в $unit->value, а просто сделать поддержку всех Stringable интерфейсов, тогда неудобство с енум уйдет в какой то трейт
enum HTTPStatus: int {
case OK = 200;
case ACCESS_DENIED = 403;
case NOT_FOUND = 404;
public function label(): string {
return static::getLabel($this);
}
public static function getLabel(self $value): string {
return match ($value) {
HTTPStatus::OK => 'OK',
HTTPStatus::ACCESS_DENIED => 'Access Denied',
HTTPStatus::NOT_FOUND => 'Page Not Found',
};
}
}
echo HTTPStatus::ACCESS_DENIED->label(); // "Access Denied"
echo HTTPStatus::getLabel(HTTPStatus::ACCESS_DENIED); // "Access Denied"
Need to add BackedEnum support. Integer/string enums implements this interface.