pei*_*iam 6 php zend-framework2
我正在编写一个模块来执行某些任务,具体取决于应用程序是在控制台还是HTTP上下文中运行.有没有办法在加载模块时检测到这个?
例如,我尝试使用Module.php类执行此操作.
namespace MyModule;
use ...
class Module
{
public function init(ModuleManager $mm)
{
if (Console context) {
// do something
} else {
// do something with HTTP
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Ujj*_*jha 21
这很容易.只需检查是否Request是Zend\Http\RequestHttp和Zend\Console\RequestConsole请求的实例.例如:
namespace Application;
use Zend\Mvc\MvcEvent;
use Zend\Http\Request as HttpRequest ;
use Zend\Console\Request as ConsoleRequest ;
class Module
{
public function onBootstrap(MvcEvent $e)
{
if ($e->getRequest() instanceof HttpRequest) {
// do something important for Http
} elseif($e->getRequest() instanceof ConsoleRequest ) {
// do something important for Console
}
}
}
Run Code Online (Sandbox Code Playgroud)
你应该能够使用php_sapi_name()
虽然不详尽,但可能的返回值包括 aolserver、apache、apache2filter、apache2handler、caudium、cgi(直到 PHP 5.3)、cgi-fcgi、cli、Continuity、embed、isapi、litespeed、milter、nsapi、phttpd、pi3web、roxen、 thttpd、tux 和 webjames。
所以我会这样做:
if (php_sapi_name() == 'cli') {
//console
} else {
//not console
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |