12

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

谢谢!

4

7 回答 7

11

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

在 Yii1 中你可以这样做:

if (Yii::app() instanceof CConsoleApplication)

在 Yii2 中,这将是:

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

希望这对某人有用...

于 2016-07-13T09:58:38.403 回答
7

您还应该能够:

echo get_class(Yii::app());

这将告诉您您使用的是哪种类型的应用程序...

于 2013-08-10T01:58:29.087 回答
5

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

确定 PHP 脚本的命令行与 http 执行的规范方法是什么?

于 2013-08-09T14:10:37.537 回答
1

检查 Yii::$app->id

  • 从控制台运行时 Yii::$app->id = 'app-console'
  • 从前端(浏览器)运行时 Yii::$app->id = 'app-frontend'
于 2018-02-05T22:20:03.197 回答
1

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

define ('WEBAPP', true)

稍后您可以在任何点签入应用程序

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

签入 Yii 1.7

于 2015-07-30T06:49:44.777 回答
1

我正在使用 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();
}
于 2018-11-20T13:17:11.223 回答
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

于 2017-01-04T12:31:33.620 回答