2013-05-09 152 views
7

我必須聲明在應用程序中任何地方都可用的常量。 在Zend Framework中1我們使用application.ini作爲申報:zend框架2常量

constants.NAME_TITLE = "User Name", 

在哪裏以及我們如何做到這一點的Zend框架2?

+1

做這些常量有什麼用?在哪裏使用它們? – Sam 2013-05-09 18:32:59

+0

如果沒有框架,你會怎麼做?如果只有一個函數可以讓你定義常量。 – Crisp 2013-05-09 18:39:00

+0

@Sam這些常量用於定義我在ex中配置的全局變量。 LINK_TO_SOAP_SERVICE,它們的值因不同的環境而不同。所以我把它們放在一個地方,並在整個項目中使用它們。 – user2367458 2013-05-09 18:51:28

回答

8

我找到解決方案here。您必須在Model中創建存儲類。在那個類中,你可以創建任意數量的常量。

<?php 
namespace Application\Model; 
class Application { 
    const EMAIL = '[email protected]'; 
} 

現在,它可以無處不在的訪問:

NameOfModule\Model\NameOfModel::NAMEOFCONSTANT 

所以,你可以例如打印常數這樣的觀點:

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

謝謝!我還通過序列化將數組放在那裏:http://stackoverflow.com/questions/1290318/php-constants-containing-arrays 減少模塊中大量重複的代碼! – Armfoot 2013-06-27 07:41:17

+0

const UPLOAD_PATH = getcwd()。 '/公共/上傳/';爲什麼這是產生錯誤? – anil 2016-12-28 11:30:23

-1

您也可以編寫函數和變量可以在您的應用程序的任何位置訪問控制器,模型和視圖。

<?php 
namespace Webapp; 

class ControllerName 
    { 
     const EMAIL  = '[email protected]'; 

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

,你可以訪問這個類的功能和性能一樣

<?php echo Webapp\ControllerName::EMAIL; ?> 

​​3210
+0

你說的是技術上正確的。爲了澄清起見,通常沒有人應該將常數和靜態方法放在控制器中(除非在極少數情況下,除了該控制器之外,它們不能屬於任何地方) – evilReiko 2017-10-30 12:26:31

1

對於Zend框架2,一個替代的解決方案。

您可以定義全局變量的配置/自動加載/ local.php

'array_name' => array(
     'variable_name' => value, 
), 

內,並用它在任何地方只是想:

$this->config = $obj->getServiceLocator()->get('config'); //create config object 
$this->you_variable = $this->config['arrayname']['variable_name']; // fetch value 
echo $this->you_variable; // print value 
+0

什麼是$ obj?你不覺得它會給錯誤嗎? – user3542450 2016-12-16 19:47:37

+0

如果你使用PHP 5.4或更高版本,可以做到在1號線,像這樣:'回聲$ obj-> getServiceLocator() - >獲取( '配置') 'arrayName中的'] [ '變量名']; ' – evilReiko 2017-10-30 12:22:14

0

您可以定義,分配和訪問常數,如下所示: 使用這兩個班,別名:

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