Php zend框架2常量

Php zend框架2常量,php,zend-framework2,constants,Php,Zend Framework2,Constants,我必须声明在应用程序中任何地方都可用的常量。 在Zend Framework 1中,我们曾在application.ini中声明: constants.NAME_TITLE = "User Name", 在Zend Framework 2中,我们在哪里以及如何做到这一点?我找到了解决方案。您必须在模型中创建存储类。在该类中,可以创建任意数量的常量 <?php namespace Application\Model; class Application { const EMAI

我必须声明在应用程序中任何地方都可用的常量。 在Zend Framework 1中,我们曾在
application.ini
中声明:

constants.NAME_TITLE = "User Name",
在Zend Framework 2中,我们在哪里以及如何做到这一点?

我找到了解决方案。您必须在模型中创建存储类。在该类中,可以创建任意数量的常量

<?php  
namespace Application\Model;
class Application {
    const EMAIL = 'email@gmail.com';
}
例如,您可以在如下视图中打印常量:

<?php echo Application\Model\Application::EMAIL; ?>

您还可以编写可以在应用程序的任何位置访问的函数和变量,如控制器、模型和视图

<?php  
namespace Webapp;

class ControllerName
   {
        const EMAIL     = 'email@gmail.com';

        public static function myFunction()
          {
             echo "doing work well.";
          }
    }


对于Zend Framework 2,一种替代解决方案

您可以在config/autoload/local.php中定义全局变量

 'array_name' => array(
      'variable_name' => value,
 ),
在任何地方都可以使用它,就像:

$this->config=$obj->getServiceLocator()->get('config')//创建配置对象
$this->you_variable=$this->config['arrayname']['variable_name'];//获取值
echo$this->you_变量;//打印值

您可以按如下方式定义、分配和访问常数: 将这两个类与别名一起使用:

use Zend\Config\Config as Zend_Config;
use Zend\Config\Processor\Constant as Zend_Constant;
然后将以下代码用于控制器类的任何函数:

define ('TEST_CONST', 'bar');
// set true to Zend\Config\Config to allow modifications
$config = new Zend_Config(array('foo' => 'TEST_CONST'), true);
$processor = new Zend_Constant();
$processor->process($config);
echo $config->foo;
它将给出o/p:

bar

这些常数有什么用?在哪里使用它们?如果没有框架,您将如何使用它们?如果只有一个函数允许您定义常量。@Sam这些常量用于定义全局变量,我在配置中为例如LINK_to_SOAP_服务设置了这些变量,它们的值在不同的环境中是不同的。所以我在一个地方设置了它们,并在整个项目中使用它们。@Crisp:我可以用php中的define()来实现,但是如果zend framework 2中有像zend framework 1中一样的东西,我想按照推荐的方法来做。谢谢!我还通过序列化将数组放在其中:减少模块中大量重复的代码!const UPLOAD_PATH=getcwd()/公开/上传/';为什么会产生错误?什么是$obj?您不认为它会出错吗?如果您使用的是PHP5.4或更高版本,您可以在一行中完成,如:
echo$obj->getServiceLocator()->get('config')['arrayname']['variable_name']use Zend\Config\Config as Zend_Config;
use Zend\Config\Processor\Constant as Zend_Constant;
define ('TEST_CONST', 'bar');
// set true to Zend\Config\Config to allow modifications
$config = new Zend_Config(array('foo' => 'TEST_CONST'), true);
$processor = new Zend_Constant();
$processor->process($config);
echo $config->foo;
bar