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

unguejic  于 2022-11-09  发布在  其他
关注(0)|答案(7)|浏览(180)

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

fcwjkofz

fcwjkofz1#

这个回复有点晚了,但是有一个Yii特有的方法可以做到这一点:
在Yii1中您可以执行以下操作:

if (Yii::app() instanceof CConsoleApplication)

在Yii2中,这将是:

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

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

bf1o4zei

bf1o4zei2#

您还应该能够:

echo get_class(Yii::app());

它会告诉你你使用的是什么类型的应用程序...

vkc1a9a2

vkc1a9a24#

请检查Yii::$app-〉id

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

pdkcd3nj5#

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

define ('WEBAPP', true)

稍后,您可以随时签入应用程序

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

已在Yii 1.7中登记

cclgggtu

cclgggtu6#

您可以使用

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

t2a7ltrp

t2a7ltrp7#

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

相关问题