Nano Hash - криптовалюты, майнинг, программирование

Zend, глобальная переменная в Application.ini?

У меня есть вопрос, так как мне нужно иметь глобальную статическую переменную, и у меня есть вопрос, есть ли возможность добавить ее в файл application.ini, как это сделать?

Или я должен:

  1. Создайте абстрактный класс со статической переменной,
  2. Зарегистрируйте его в Zend_Registry, чтобы иметь доступ к этой переменной из всех приложений (зарегистрируйте его в файле Bootstrap)
  3. Я могу использовать его, или есть более простой, я имею в виду "автоматический способ" сделать это?

Спасибо за совет! С уважением,


  • Файлы конфигурации предназначены для указания параметров, используемых в качестве входных данных для вашего приложения. Вы не должны добавлять что-либо программно 14.02.2011

Ответы:


1

в файле Application.ini

someservice.apikey  = 12345678
someservice.passkey = 87654321

в начальной загрузке

public function _initSomeservice()
{
    $someservice = $this->getOption('someservice');
    Zend_Registry::set('someservice', $someservice);
}

вытащить из реестра

$config = Zend_Registry::get('someservice');
15.02.2011

2

Лучшим решением для меня было создать переменную в файле index.php. Я добавил: определено ('VARIABLE_NAME') || определить('ИМЯ_ПЕРЕМЕННОЙ', 'Здесь что-то есть');

И теперь я могу получить к нему доступ отовсюду ;D Большое спасибо!

14.02.2011

3

Я бы не стал использовать ни Zend_Registry, ни константы по двум причинам.

  1. В реестре никогда не знаешь, что случилось с переменными. Каждая часть приложения может изменить их, и вы не будете замечены. На самом деле я вижу реестр как антипаттерн.
  2. Константы излишне загрязняют ваше приложение. Что если использовать для каждой конфигурации какую-то константу? Вы должны хранить дополнительный документ со всеми определенными константами, это ужасно поддерживать.

Наилучший вариант — напрямую получить объект конфигурации из файла bootstrap. В следующих примерах я предполагаю, что у вас есть это в вашем application.ini:

someservice.apikey  = 12345678
someservice.passkey = 87654321

Начальная загрузка устанавливается как параметр в файле frontController. Если у вас есть контроллер действий, это делает его таким простым:

$serviceOptions = $this->getInvokeArg('bootstrap')->getOption('someservice');

Если у вас есть служба, созданная в вашем контроллере, теперь вы можете передать ее через конструктор и/или сеттер.

Если вы хотите получить параметры не внутри вашего контроллера, а где-то еще, вы можете использовать шаблон singleton, который реализует frontController. Итак, в любом месте (конечно, только во время отправки, а не во время начальной загрузки) вы можете сделать это:

$frontController = Zend_Controller_Front::getInstance();
$serviceOptions  = $frontController->getParam('bootstrap')
                                   ->getOption('someservice');

С помощью вышеуказанного метода вы в безопасности, у вас всегда есть правильный вариант конфигурации, а не какой-то, возможно, мутированный.

17.10.2011
  • Это то, что я искал! Спасибо! 22.05.2012

  • 4

    Вы можете указать значение в application.ini и в Bootsrap.php, прочитать его и сохранить в Zend_Registry. Вы также можете использовать метод определения PHP для создания констант (если вы проверяемы, это константа).

    14.02.2011
  • +1 просто за использование глобальных переменных PHP. Таким образом, обходя потребность в доступе к статическому классу Zend в представлении. 07.07.2012

  • 5

    Я только что добавил define('VARIABLE_NAME', 'Здесь что-то'); для начальной загрузки. Мгновенные глобальные константы.

    Эти константы были помещены внутрь защищенной функции _intiFuncName внутри класса расширения начальной загрузки.

    07.01.2012

    6

    У меня есть ряд констант со следующим соглашением об именах в application.ini:

    system.image_path  = "/assets/images"
    system.custom_path = "/assets/custom"
    system.cdn_URL     = "http://cdnurl.com"  
    

    И я просто ссылаюсь на них в своем коде, как если бы они были константами PHP:

    SYSTEM_IMAGE_PATH
    SYSTEM_CUSTOM_PATH
    SYSTEM_CDN_URL
    
    27.06.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..