2013-02-06 51 views
0

我想添加一个应用程序常量,如YII_DEBUG。我发现它应该在YiiBase类中定义。但我不知道最好的办法是什么。如何将全局常量添加到应用程序中?

这是什么Yii的文件说

Yii的是服务于共同的框架功能的辅助类。

它封装了提供实际实现的YiiBase。通过编写你自己的Yii类,你可以定制YiiBase的一些功能。

我应该怎样写我自己的Yii类,我应该在哪里放它,在哪里应该叫它?

+0

你在哪里发现应该在'YiiBase'中定义它?那(没有*非常强烈的理由修改Yii来源)正是你必须做的**而不是**! – Jon

+0

不是在YiiBase中,而是在Yii类中定义的(Yii.php),它可能被扩展。 blockquote中的文本来自[官方文档](http://www.yiiframework.com/doc/api/1.1/Yii) – user1750290

+0

您应该向/index.php文件中添加一个php常量。没有“最好的方式”:只存在“有效的方式”。 – sensorario

回答

0

这取决于你正在试图做什么与这个类的顶部确定与它的最佳做法。最简单的方法是在vendor文件夹中设置新的类文件并调用它,无论如何,myclass.php。然后,你需要确保被拿起厂商文件夹中的config/main.php文件,像这样:

Yii::import('application.vendors.*'); 
require_once('myclass.php'); 

最后,你应该能够在应用程序内从几乎任何地方打电话给你的新类,像这样:

$myclass = new myclass(); 
$myclass->thisMethod(); 

当然,还有其他方法可以做到这一点。根据你想要自定义课程做什么,你可能会更好地使用不同的方法,但这种方式一定会让你快速运行。

1

您可以在很多地方定义全局常量,以便在请求处理期间自动定义它们;选择取决于最有意义的内容。您的选项包括:

  1. index.phpentry script - 常量可在整个应用程序中使用。
  2. configuration file,在您编写return array(...)之前 - 常量将在整个应用程序中可用,但不会在调用Yii::createApplication(或等效的createWebApplication)之前使用。
  3. 应用程序类定义本身(其中它们也可以是class constants而不是全局常量)。同样,只有在输入脚本中调用createApplication之后,常量才可用。

如果你想定义一个常用于YII_DEBUG的常数,你应该像Yii那样做,然后选择选项#1。

+0

我尝试了第一个选项,如果在createWebApplication()之前放置常量,它就不起作用。它必须在createWebApplication()和run()之间,但它不遵循默认常量的逻辑。这样我将不得不删除YII_DEBUG,并且我的const必须设置为FALSE,并且我希望与YII_DEBUG具有相同的行为,但语义不同。 – user1750290

相关问题