基本上我有一個PHP類,我想從命令行測試並運行某種方法。我確信這是一個基本問題,但我錯過了文檔中的某些內容。我知道如何運行一個文件,顯然php -f
但不知道如何運行文件,該文件是一個類,並執行給定方法如何從命令行執行類中的方法
15
A
回答
32
這將工作:
php -r 'include "MyClass.php"; MyClass::foo();'
但我看不出有任何理由做的,除了測試雖然。
+5
我今天也學到了一些新東西,然後... – Repox 2011-02-11 14:40:44
4
如佩卡已經提到的,你需要編寫處理的具體方法的執行腳本然後從命令行運行它。
test.php的:
<?php
class MyClass
{
public function hello()
{
return "world";
}
}
$obj = new MyClass();
echo $obj->hello();
?>
而在你的命令行
php -f test.php
+1
謝謝,我不認爲我今天早上想清楚 – 2011-02-11 13:57:26
4
下面是Repox代碼的一個更好的例子。這隻會在從命令行調用時運行de方法。
<?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();
}
?>
11
我可能會使用call_user_func來避免對類或方法名進行哈希編碼。 輸入或許應該使用驗證的一些kinf,但...
<?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);
?>
結果:
E:\>php testClass.php MyClass Sum 2 3
Calling 'MyClass::Sum'...
Sum(2, 3) = 5
相關問題
- 1. 如何可以從命令行在Linux中執行nagios命令
- 2. 如何從命令行在iTerm窗口中執行命令?
- 3. 如何從命令行執行Scrooge?
- 4. 從NSIS執行命令行命令
- 5. 從命令行執行Django Shell命令
- 6. 從Python執行命令行命令
- 7. 從Perl執行命令行命令?
- 8. 從命令行執行Powershell
- 9. 從JConsole執行命令行
- 10. 如何從C++程序執行命令行命令
- 11. 如何在命令行中運行Python類方法
- 12. 如何在iPhone中執行命令行?
- 13. 我該如何測試執行命令行程序的PHP類方法?
- 14. 如何直接從命令行執行maven插件執行?
- 15. 正確執行2條SQL命令而不執行其他命令的方法
- 16. 如何從命令行執行沒有主要方法的Testng項目
- 17. 如何通過執行外部命令來執行vim命令?
- 18. 如何從c#執行cmd命令#
- 19. 如何從Java程序執行命令
- 20. 如何執行PowerShell命令從CMD.EXE
- 21. 如何從C#執行命令?
- 22. 如何從bash執行mongo命令?
- 23. 如何從python執行os/shell命令
- 24. 如何從Makefile執行SED命令
- 25. 如何從build.gradle執行git命令?
- 26. CConsole命令如何從URL執行
- 27. 如何從windows執行hg clone命令
- 28. 如何從scala腳本執行命令?
- 29. 方法來執行Linux命令失敗
- 30. 延遲方法執行命令
好,謝謝,這可能情況而愚蠢的問題:) – 2011-02-11 13:53:33