mega gratis full español descargar php phpstorm

full - phpstorm gratis



¿Cómo lidiar con la advertencia de "método no encontrado en clase" para los métodos implementados mágicamente? (4)

Basándome en lo que dijo Madara, descubrí que no se degradaría lo suficiente como para mi gusto, independientemente de la gravedad con la que lo configuré, así que hice una nueva Severidad para el método indefinido que no tiene atributos y apagué la casilla de downgrade ( ver imagen abajo)

Si pasé el ratón sobre mis métodos mágicos ahora, aparece el mensaje emergente, pero de lo contrario no me distrae. Un paso más que simplemente desconectar la inspección, porque al menos de esta manera aún se puede detectar un método real indefinido al pasar el mouse sobre el nombre

Estoy sentado en una gran base de código que contiene varias clases que exponen la funcionalidad a través de métodos implementados mágicamente (utilizando __call y __callStatic ). Por ejemplo:

class Foo { public function __call($name, $parameters) { echo "You called $name()./n"; } } $f = new Foo; $f->test(); // runs fine, but PhpStorm flags as a warning

El problema es que PhpStorm cree que el método test() no existe, por lo que da una advertencia en el sitio de llamadas. Esto es un poco molesto, ya que por supuesto el código se ejecutará y se comportará como se espera.

Ya he desactivado la gravedad al marcar la opción "degradar la gravedad si los métodos mágicos están presentes en la clase", pero prefiero:

  1. deshabilitar completamente esta funcionalidad solo para clases específicas, o
  2. trabajar con el IDE en lugar de hacerlo en contra de él, proporcionarle la información que ya tengo, de modo que nuestros puntos de vista coincidan

¿Es posible alguno de los anteriores? ¿Si es así, cómo?

Pregunta de bonificación adicional: considere el caso donde las llamadas a métodos están siendo encadenadas.

$f = new Foo; $f->test()->chain()->moreChain(); // potentially runs fine

Asumiendo que la llamada mágica a $f->test() devuelve algo apropiado, las siguientes llamadas (posiblemente, pero no necesariamente, también mágicas) funcionarán bien. Sin embargo, dado que no hay forma de que sepa decirle al IDE lo que test() devuelve indica que el resto de la cadena de llamadas está llena de métodos faltantes también. Y para empeorar las cosas, la configuración de "degradar la degradación" no se aplica a estas advertencias, ya que el IDE no sabe qué clase se supone que son estos objetos intermedios.

¿Hay alguna solución que también pueda cubrir este caso?

Actualizar

Aunque documentar los métodos mágicos con @method anotaciones @method parece funcionar, tengo que suponer que actualmente hay varios problemas con este enfoque porque me costó un poco de trabajo encontrar estos errores relacionados:

Espero que los arreglen en un marco de tiempo razonable.


Bueno, puede ir al menú de preferencias, en Inspecciones , ir a No definido -> Método no definido y verificar la degradación de la gravedad si los métodos __magic están presentes .

Eso haría que la bandera sea menos severa, (en lugar de Advertencia, como Información), lo que aún le da luz verde en su verificación de documentos.

No hay nada más que sepa aparte de tener @property o @method PHPDoc en la clase objetivo para cada método que pueda usarse.


En lugar de desactivar globalmente las inspecciones al degradar la gravedad de la inspección, puede agregar un comentario a la línea individual para ignorar solo esa inspección en particular.

/** @noinspection PhpUndefinedMethodInspection */ Assertion::NullOrAssertionDoesNotExist();


Puedes usar una variable dinámica:

$test = ''test''; $chaine = $f->$test(); // no phpStorm flag, & the code works