Php zend框架2常量
我必须声明在应用程序中任何地方都可用的常量。 在Zend Framework 1中,我们曾在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
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