call_user_func special function optimization unsound with strict_types
Abierto
Nadie ha tomado este issue todavía.
Bug
Category: Engine
Status: Needs Triage
- Lenguaje dominante
- C
- Estrellas
- 40.4k
- Forks
- 8.2k
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 96
Descripción
Description
The following code:
<?php
declare(strict_types=1);
namespace Foo;
// strlen() will be called with strict_types=0, so this is legal.
var_dump(call_user_func('strlen', false));
// Called with strict_types=1
var_dump(\call_user_func('strlen', false));
Resulted in this output:
int(0)
Fatal error: Uncaught TypeError: strlen(): Argument #1 ($string) must be of type string, false given in /in/bcCZ4:10
Stack trace:
#0 /in/bcCZ4(10): strlen(false)
#1 {main}
thrown in /in/bcCZ4 on line 10
But I expected this output instead:
Well, not sure, it should be consistent I suppose
PHP Version
8.3+
Operating System
No response
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el reproducer proporcionado para PHP 8.3+ y compara las rutas de llamada namespaced y fully qualified de call_user_func con strict_types=1. Sigue la optimización de funciones especiales en el intérprete de PHP, haz que el comportamiento sea coherente y añade cobertura para ambas llamadas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- c, php
- Área
- backend, compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100