Hola Tomas,
El branch esta pensado para correr PHPStan dentro de Toba… asi que le archivo neon tuyo probablemente deba incluir el de Toba estimo.
O sea, no esta levantando el autoload (y es correcto porque toba lo maneja aparte de composer) 2) Cree un archivo de config `phpstan.neon` para decirle que haga autoload del directorio php: Archivo phpstan.neon:Yo opte por pasarle directamente el archivo autoload que tiene que levantar, ya que los que usa el framework tienen por nombre [b]IdProyecto_autoload.php[/b] con lo cual no necesariamente puede reconocerlo.parameters: autoload_directories: - php
```Note: Using configuration file /path/al/proyecto/phpstan.neon.
11/204 [▓░░░░░░░░░░░░░░░░░░░░░░░░░░░] 5%
Warning: require_once(consola/consola.php): failed to open stream: No such file or directory in /path/al/proyecto/php/extension_toba/stock_comando.php on line 3Fatal error: require_once(): Failed opening required ‘consola/consola.php’ (include_path=‘/path/al/proyecto/vendor/pear/console_getopt:/path/al/proyecto/vendor/pear/pear-core-minimal/src:/path/al/proyecto/vendor/pear/pear_exception:/path/al/proyecto/vendor/siu-toba/numbers_words:/path/al/proyecto/vendor/siu-toba/structures_graph:/path/al/proyecto/vendor/siu-toba/text_highlighter:/path/al/proyecto/vendor/pear/console_getopt:/path/al/proyecto/vendor/pear/pear-core-minimal/src:/path/al/proyecto/vendor/pear/pear_exception:/path/al/proyecto/vendor/siu-toba/numbers_words:/path/al/proyecto/vendor/siu-toba/structures_graph:/path/al/proyecto/vendor/siu-toba/text_highlighter:.:/usr/share/php’) in /path/al/proyecto/php/extension_toba/stock_comando.php on line 3
</blockquote> Todo lo que sea extension de comandos va a ser un problema a resolver, por dos motivos: - Tiene diseño top-down, asi que cada archivo va incluyendo lo que necesita hacia abajo... hay una cantidad minima de herencia ahi. - A causa de eso, no hacen uso del autoload y por ende es cuasi imposible que PHPStan enganche las clases correctas salvo que arranque a ejecutar desde el launcher de Toba. Ciertamente ahi voy a tener que encontrar la manera de que reconozca la presencia de esos archivos por mas que no esten en el autoload. <blockquote>3) Intentando y probando varias cosas, termine con el archivo phpstan.neon de la siguiente manera
parameters:
autoload_directories:
- php
- vendor/siu-toba/framework/php
excludes_analyse:
- vendor/siu-toba/framework/php/convenciones
- vendor/siu-toba/framework/php/modelo/migraciones_instancia
- vendor/siu-toba/framework/php/3rosLos exclude son necesarios porque detecta clases duplicadas. En este punto, la salida que obtengo al ejecutar el ya mencionado comando es esta:</blockquote> Bien, es mas o menos similar a lo que llegue yo.. solo que aun asi se muere impunemente en menos del 10%, tendria que agregar la exclusion para las migraciones de la instancia que me estan faltando. <blockquote>
68/204 [▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░] 33%
Warning: require_once(consola/consola.php): failed to open stream: No such file or directory in /path/al/proyecto/php/extension_toba/stock_comando.php on line 3Fatal error: require_once(): Failed opening required ‘consola/consola.php’ (include_path=‘/path/al/proyecto/vendor/pear/console_getopt:/path/al/proyecto/vendor/pear/pear-core-minimal/src:/path/al/proyecto/vendor/pear/pear_exception:/path/al/proyecto/vendor/siu-toba/numbers_words:/path/al/proyecto/vendor/siu-toba/structures_graph:/path/al/proyecto/vendor/siu-toba/text_highlighter:/path/al/proyecto/vendor/pear/console_getopt:/path/al/proyecto/vendor/pear/pear-core-minimal/src:/path/al/proyecto/vendor/pear/pear_exception:/path/al/proyecto/vendor/siu-toba/numbers_words:/path/al/proyecto/vendor/siu-toba/structures_graph:/path/al/proyecto/vendor/siu-toba/text_highlighter:.:/usr/share/php’) in /path/al/proyecto/php/extension_toba/stock_comando.php on line 3
</blockquote> Es lo que te decia mas arriba, intenta cargar desde tus clases... cuando en la consola el camino es inverso, salvo que tengas el require_once explicito, no va a encontrar la clase. Ademas, justamente esa parte requiere de parametros para determinar proyecto, directorio de instalacion, etc... no es muy "static" friendly. <blockquote>Una cosa que se me ocurre probar (aun no me hice el tiempo) es ver si se puede hacer un autoload de todo toba en composer tal como indican aca[1]. No es util para toba en si pero por ahi le sirve a phpstan. Tenes idea si eso se puede hacer? [1]: https://getcomposer.org/doc/04-schema.md#psr-4</blockquote> Toba ya tiene apuntado en composer el autoload con formato psr-4, lo que hay que ir haciendo es pasar el resto de las clases a namespaces e incorporarlas ahi dentro. Me parece que es mas sencillo hacer asi:
parameters:
autoload_files:
- php/proyecto_autoload.php
- vendor/siu-toba/framework/php/toba_autoload.phpY con eso intentar garantizarse que levanta ambos, igual.. .aun con eso, la parte de consola seguramente siga fallando.. asi que quizas debas meter esa parte dentro del exclude. Saludos