Muszę zadeklarować stałe, które są dostępne w dowolnym miejscu aplikacji. w Zend Framework 1 użyliśmy zadeklarować w application.ini
jak:zend framework 2 stałe
constants.NAME_TITLE = "User Name",
Gdzie i jak robimy to w Zend Framework 2?
Muszę zadeklarować stałe, które są dostępne w dowolnym miejscu aplikacji. w Zend Framework 1 użyliśmy zadeklarować w application.ini
jak:zend framework 2 stałe
constants.NAME_TITLE = "User Name",
Gdzie i jak robimy to w Zend Framework 2?
Znalazłem rozwiązanie here. Musisz utworzyć klasę pamięci w Modelu. W tej klasie możesz utworzyć tyle stałych, ile chcesz.
<?php
namespace Application\Model;
class Application {
const EMAIL = '[email protected]';
}
Teraz może to być dostępne wszędzie:
NameOfModule\Model\NameOfModel::NAMEOFCONSTANT
Więc można na przykład wydrukować stała w widoku jak ten:
<?php echo Application\Model\Application::EMAIL; ?>
Dzięki za to! Umieszczam tam również tablice, nadając je w postaci szeregowej: http://stackoverflow.com/questions/1290318/php-constants-containing-arrays Redukuje wiele zduplikowanych kodów w twoich modułach! – Armfoot
const UPLOAD_PATH = getcwd(). "/ public/uploads /"; dlaczego powoduje to błąd? – anil
Można również funkcję i zmienną pisać do którego można uzyskać dostęp w dowolnym miejscu aplikacji, takim jak kontroler, model i widoki.
<?php
namespace Webapp;
class ControllerName
{
const EMAIL = '[email protected]';
public static function myFunction()
{
echo "doing work well.";
}
}
i można uzyskać dostęp do tej funkcji klasy i mienia jak
<?php echo Webapp\ControllerName::EMAIL; ?>
i
<?php echo Webapp\ControllerName::myFunction(); ?>
To, co powiedziałeś, jest technicznie poprawne.Dla wyjaśnienia, normalnie nikt nie powinien wprowadzać stałych i statycznych metod do kontrolera (chyba że jest to rzadki przypadek, w którym nie mogą należeć do nikąd poza tym kontrolerem). – evilReiko
Dla Zend Framework 2, jeden alternatywnego rozwiązania.
można zdefiniować zmienną globalną wewnątrz config/autoload/local.php
'array_name' => array(
'variable_name' => value,
),
i używać go w dowolnym miejscu tak jak:
$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
co to jest $ obj? nie sądzisz, że to spowoduje błąd? – user3542450
Jeśli używasz PHP 5.4 lub nowszego, możesz zrobić to w 1 linii, tak jak to: 'echo $ obj-> getServiceLocator() -> get ('config') ['arrayname'] ['variable_name']; ' – evilReiko
Można zdefiniować, przypisywać i dostęp STAŁA w następujący sposób: za pomocą tych dwóch klas z aliasu:
use Zend\Config\Config as Zend_Config;
use Zend\Config\Processor\Constant as Zend_Constant;
a następnie użyć być niski kod do dowolnej funkcji klasy kontrolera:
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;
Da O/P:
bar
Co zastosowanie mają te stałe? Gdzie ich użyć? – Sam
Jak zrobiłbyś to bez ramy? Gdyby była tylko funkcja, która pozwalałaby ci zdefiniować stałe. – Crisp
@Sam Te stałe mają na celu zdefiniowanie zmiennych globalnych, które ustawię w konfiguracji na przykład. LINK_TO_SOAP_SERVICE, ich wartości są różne w różnych środowiskach. Dlatego ustawiam je w jednym miejscu i używam w całym projekcie. – user2367458