Básicamente tengo una clase de PHP que quiero probar desde la línea de comandos y ejecutar un método determinado. Estoy seguro de que esta es una pregunta básica, pero me falta algo de los documentos. Sé cómo ejecutar un archivo, obviamente php -f
pero no estoy seguro de cómo ejecutar ese archivo que es una clase y ejecutar un método dado¿Cómo se ejecuta un método en una clase desde la línea de comandos
Respuesta
Esto funcionará:
php -r 'include "MyClass.php"; MyClass::foo();'
Pero aún no hay razones para hacer que, además de las pruebas aunque.
Aprendí algo nuevo hoy también, entonces ... – Repox
ahh eso es genial y sí, todo lo que estoy haciendo es probar –
Ese es el truco más increíble que encontré para la línea de comandos desde que comencé a buscarlo :) –
Como ya mencionó Pekka, necesita escribir un script que maneje la ejecución del método específico y luego ejecutarlo desde su línea de comandos.
prueba.php:
<?php
class MyClass
{
public function hello()
{
return "world";
}
}
$obj = new MyClass();
echo $obj->hello();
?>
Y en su línea de comandos
php -f test.php
, no creo que me Estaba pensando claramente esta mañana –
Aquí hay un ejemplo más nítido del código de Repox. Esto solo ejecutará el método cuando se llame desde la línea de comando.
<?php
class MyClass
{
public function hello()
{
return "world";
}
}
// Only run this when executed on the commandline
if (php_sapi_name() == 'cli') {
$obj = new MyClass();
echo $obj->hello();
}
?>
Probablemente usaría call_user_func para evitar la codificación de nombres de clase o método. de entrada probablemente debería utilizar algún kinf de validación, aunque ...
<?php
class MyClass
{
public function Sum($a, $b)
{
$sum = $a+$b;
echo "Sum($a, $b) = $sum";
}
}
// position [0] is the script's file name
array_shift(&$argv);
$className = array_shift(&$argv);
$funcName = array_shift(&$argv);
echo "Calling '$className::$funcName'...\n";
call_user_func_array(array($className, $funcName), $argv);
?>
Resultados:
E:\>php testClass.php MyClass Sum 2 3
Calling 'MyClass::Sum'...
Sum(2, 3) = 5
- 1. ¿Cómo se ejecuta un comando como administrador desde la línea de comandos de Windows?
- 2. ¿Cómo se ejecuta una única consulta a través de mysql desde la línea de comandos?
- 3. ¿Puede PHP detectar si se ejecuta desde un trabajo cron o desde la línea de comandos?
- 4. ¿Ejecuta la línea de comandos desde C# con los parámetros?
- 5. Cerrar una aplicación que se ejecuta desde la línea de comandos de DOS
- 6. ¿Cómo podría evitar que PHP devuelva encabezados cuando se ejecuta desde la línea de comandos?
- 7. 'Excepción en hilo java.lang.NoClassDefFoundError 'principal'' cuando el programa Java se ejecuta desde la línea de comandos
- 8. script de línea de comandos php no se ejecuta
- 9. Salida a línea de comandos si se inició desde la línea de comandos
- 10. ¿Cómo se usa StyleCop desde la línea de comandos?
- 11. Cómo arrancar desde la línea de comandos
- 12. ¿Cómo se ejecuta un comando nativo arbitrario desde una cadena?
- 13. perfilar una aplicación Java que se ejecuta en la línea de comandos
- 14. Ejecuta el código php en la línea de comandos
- 15. ¿Cómo se ejecuta un comando en un sistema remoto en una secuencia de comandos de BASH?
- 16. Ejecutar una biblioteca de Ruby desde la línea de comandos
- 17. ¿Por qué mi línea de comandos no se ejecuta desde cron?
- 18. No se puede ejecutar UIAutomationTest desde la línea de comandos
- 19. Ejecutar Java desde la línea de comandos
- 20. Referencia rápida desde la línea de comandos
- 21. ¿Cómo se implementa una aplicación de iPhone en el simulador desde la línea de comandos?
- 22. Cómo instalar paquetes desde la línea de comandos en Suse
- 23. Detener una aplicación web tomcat desde la línea de comandos
- 24. Cómo ejecutar ffmpeg desde la línea de comandos en android
- 25. ¿Cómo agrego/actualizo una propiedad dentro de una MSI desde la línea de comandos?
- 26. Creando una solución ASP.NET desde la línea de comandos?
- 27. webapp de reinicio tomcat desde la línea de comandos
- 28. Python, ejecuta herramientas de línea de comandos en paralelo
- 29. Cómo pasar argumentos desde la línea de comandos a gradle
- 30. ¿Cómo se actualiza la referencia web desde la línea de comandos de VS 2008?
ok gracias, esto podría de sido una pregunta tonta :) Gracias –