Support Explicit Backed Enum casting
Nessuno ha ancora preso questa issue.
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.1k
- Merge medio
- 2g 13h
- PR unite (30g)
- 96
Descrizione
Description
The following code:
<?php
echo '----- Backed integer enum -----'.PHP_EOL;
enum DayOfWeekInt : int
{
case Monday = 1;
case Tuesday = 2;
case Wednesday = 3;
case Thursday = 4;
case Friday = 5;
case Saturday = 6;
case Sunday = 7;
}
$var = DayOfWeekInt::Monday;
try {
echo '--- intval($var) --'.PHP_EOL;
echo intval($var);
} catch (\Throwable $ex) {
echo $ex;
}
echo PHP_EOL;
try {
echo '--- (int) $var ---'.PHP_EOL;
echo (int) $var;
} catch (\Throwable $ex) {
echo $ex;
}
echo PHP_EOL;
echo PHP_EOL;
echo '----- Backed string enum -----'.PHP_EOL;
enum DayofWeekString : string
{
case Monday = 'monday';
case Tuesday = 'tuesday';
case Wednesday = 'wednesday';
case Thursday = 'thursday';
case Friday = 'friday';
case Saturday = 'saturday';
case Sunday = 'sunday';
}
$var = DayofWeekString::Monday;
try {
echo '--- strval($var) ---'.PHP_EOL;
echo strval($var);
} catch (\Throwable $ex) {
echo $ex;
}
echo PHP_EOL;
try {
echo '--- (string) $var ---'.PHP_EOL;
echo (string) $var;
} catch (\Throwable $ex) {
echo $ex;
}
echo PHP_EOL;
Resulted in this output:
----- Backed integer enum -----
--- intval($var) --
Warning: Object of class DayOfWeekInt could not be converted to int in /in/pfXH4 on line 18
1
--- (int) $var ---
Warning: Object of class DayOfWeekInt could not be converted to int in /in/pfXH4 on line 26
1
----- Backed string enum -----
--- strval($var) ---
Error: Object of class DayofWeekString could not be converted to string in /in/pfXH4:48
Stack trace:
#0 {main}
--- (string) $var ---
Error: Object of class DayofWeekString could not be converted to string in /in/pfXH4:56
Stack trace:
#0 {main}
But I expected this output instead:
no warnings, no errors and a correct explicit conversion.
----- Backed integer enum -----
--- intval($var) --
1
--- (int) $var ---
1
----- Backed string enum -----
--- strval($var) ---
monday
--- (string) $var ---
monday
PHP Version
PHP 8.5.3
Operating System
No response
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo la riproduzione fornita per PHP 8.5.3 nell’issue e confronta i cast espliciti a integer e string per i backed enums. Traccia il comportamento del casting degli enum nel codice sorgente di PHP, quindi aggiungi la copertura per i valori previsti e per l’assenza di warnings o errori. Il lavoro è concluso quando tutte e quattro le conversioni producono i backed values mostrati nel report.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- php
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100