如何检查YII应用程序是从控制台还是从浏览器运行?

如何检查YII应用程序是从控制台还是从浏览器运行?,yii,Yii,我是YII框架的新手,我想知道是否有办法知道/检查您是从控制台还是在浏览器中运行 谢谢 以同样的方式确定PHP应用程序是否正在控制台中运行 您还应该能够做到: echo get_class(Yii::app()); 这将告诉您所使用的应用程序类型…最有效的方法似乎是在根文件index.php中定义这一行: define ('WEBAPP', true) 稍后,您可以在应用程序的任何位置签入 if (defined('WEBAPP')) { echo "This is webapp"; }

我是YII框架的新手,我想知道是否有办法知道/检查您是从控制台还是在浏览器中运行


谢谢

以同样的方式确定PHP应用程序是否正在控制台中运行


您还应该能够做到:

echo get_class(Yii::app());

这将告诉您所使用的应用程序类型…

最有效的方法似乎是在根文件index.php中定义这一行:

define ('WEBAPP', true)
稍后,您可以在应用程序的任何位置签入

if (defined('WEBAPP')) {
 echo "This is webapp";
} else {
  echo "app was launched via console";
}

签入Yii 1.7

此回复有点晚,但有一种Yii特定的方法可以做到这一点:

在Yii1中,您可以执行以下操作:

if (Yii::app() instanceof CConsoleApplication)
在Yii2中,这将是:

 if (Yii::$app instanceof Yii\console\Application)
希望对某人有用…

您可以使用

if(is_a(Yii::$app,'yii\console\Application'))

for console, and

if(is_a(Yii::$app,'yii\web\Application'))

for web.

检查Yii::$app->id

  • 从控制台运行时:Yii::$app->id='app console'
  • 从前端(浏览器)运行时,Yii::$app->id='app frontend'

我正在使用Yii 1,我使用此功能检查

public static function isWebRequest()
{
    return Yii::app() instanceof CWebApplication;
}

public static function isConsoleRequest()
{
    return Yii::app() instanceof CConsoleApplication; //!self::isWebRequest();
}
我将这些函数放在helper(Componenet)类中,并将其用作:

if(MyRandomHelper::isConsoleRequest())
{
    Email::shoot();
}
谢谢,我还以为有一个我不知道的“YII特定”功能。再次感谢。