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

时间:2013-08-09 14:01:21

标签: yii

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

谢谢!

7 个答案:

答案 0 :(得分:9)

这个回复有点迟了,但有一种特定于Yii的方法可以做到这一点:

在Yii1中你可以这样做:

if (Yii::app() instanceof CConsoleApplication)

在Yii2中将是:

 if (Yii::$app instanceof Yii\console\Application)

希望这对某人有用......

答案 1 :(得分:7)

您还应该能够:

echo get_class(Yii::app());

它会告诉你你在哪种类型的应用程序......

答案 2 :(得分:6)

您可以确定是否在控制台中运行PHP应用程序。

What is the canonical way to determine commandline vs. http execution of a PHP script?

答案 3 :(得分:1)

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

define ('WEBAPP', true)

稍后您可以在任何时候检查应用程序

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

在Yii 1.7中检查

答案 4 :(得分:1)

检查Yii :: $ app-> id

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

答案 5 :(得分:0)

您可以使用

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

for console, and

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

for web.

https://stackoverflow.com/a/30635800/4916039

答案 6 :(得分:0)

我正在使用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();
}