2013-05-09 15 views
7

sabitleri.zend framework 2 yerde uygulamada kullanılabilir sabitleri beyan etmek zorunda

constants.NAME_TITLE = "User Name", 

ve nasıl Zend Framework 2'de yapıyorsun: Zend Framework 1'de biz application.ini içinde bildirmek için kullanılan?

+1

bu sabitleri ne önemi var:

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 o/p verecek? Nerede kullanmalı? – Sam

+0

Çerçeve olmadan nasıl yaparsınız? Eğer sadece sabitleri tanımlamanıza izin veren bir işlev varsa. – Crisp

+0

@Sam Bu sabitler, ex için konfigürasyonda ayarladığım global değişkenleri tanımlamak içindir. LINK_TO_SOAP_SERVICE, değerleri farklı ortamlar için farklıdır. Bu yüzden onları bir yere koyup tüm projede kullanıyorum. – user2367458

cevap

8

Ben çözüm here bulduk. Modelde depolama sınıfı oluşturmalısınız. Bu sınıfta istediğiniz kadar sabit oluşturabilirsiniz.

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

o tarafından her yerde erişilebilir:

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

teşekkürler varmış gibi zend framework 2'de varsa tavsiye yolunu izlemek istiyordu! Ben de onları seri ile orada diziler yerleştirerek ediyorum: http://stackoverflow.com/questions/1290318/php-constants-containing-arrays sizin modüllerde yinelenen bir sürü kod azaltır! – Armfoot

+0

const UPLOAD_PATH = getcwd(). '/ Kamu/yükleme /'; bu neden hata üretiyor? – anil

-1

Ayrıca fonksiyonu ve değişken yazabilirsiniz: Yani örneğin böyle bir görünümde sürekli yazdırabilirsiniz

NameOfModule\Model\NameOfModel::NAMEOFCONSTANT 

Uygulamanıza denetleyici, model ve görünümler gibi herhangi bir yerde erişilebilir.

<?php 
namespace Webapp; 

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

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

ve Zend Framework 2, bir alternatif çözüm için

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

ve

<?php echo Webapp\ControllerName::myFunction(); ?> 
+0

Söylediklerin teknik olarak doğru.Açıklığa kavuşturmak için, normalde hiç kimse bir denetleyicide sabit ve statik yöntemler kullanmamalıdır (bu denetleyici dışında hiçbir yere ait olmayan nadir bir durum değilse) – evilReiko

1

gibi bu sınıf fonksiyonu ve özelliği erişebilirler.

her yerde tıpkı config/autoload/yerel.php

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

içindeki global değişken tanımlamak ve kullanabilirsiniz:

$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 nedir? Hata vereceğini düşünmüyor musun? – user3542450

+0

PHP 5.4 veya daha üst bir sürümü kullanıyorsanız, bunu 1 satırda yapabilirsiniz, örneğin: echo $ obj-> getServiceLocator() -> get ('config') ['arrayname'] ['variable_name']; ' – evilReiko

0

tanımlayabilir, şöyle atamak ve erişim SABİT edebilirsiniz: olmak kullanın sonra

use Zend\Config\Config as Zend_Config; 
use Zend\Config\Processor\Constant as Zend_Constant; 

Ve: takma adla bu iki sınıf kullanın Kontrolör sınıfının sizin herhangi fonksiyona düşük kod:

bar