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

Использование файла конфигурации из класса php

Я как бы новичок в PHP ООП, но у меня довольно приличное понимание концепций, лежащих в основе ООП. Я хочу иметь файл конфигурации, содержащий общие данные приложения, которые можно использовать во всем приложении. Довольно нормально, но я не совсем уверен, как это сделать. Я не хочу создавать класс, а затем требовать этот класс, расширять его и / или требовать файл конфигурации в каждом классе. Мой файл конфигурации выглядит примерно так:

<?php

$configs = array(
   'pagination' => 20,
   'siteTitle' => 'Test site',
   'description' => 'This is a test description',
   'debug' => true
);

?>

Единственное, что я могу придумать для этого, - это следующее:

<?php 

class user {
   public function __construct() {
       require 'config.php';
       if(configs['debug']) {
           echo 'Debugging mode';
       }
   }
}

?>

Проблема, которую я вижу с этим методом, заключается в том, что мне пришлось бы вручную включать этот файл конфигурации в каждый класс, который я хочу использовать, что кажется избыточным. В идеале я хотел бы включить файл в абсолютный корневой путь, а затем иметь возможность использовать любые значения из любого класса, однако, если вам просто нужен файл вне класса, класс не будет иметь доступа к значениям. Я также не хочу создавать класс конфигурации, а затем каждый класс, которому нужны значения, расширяет класс конфигурации. Опять же, это кажется лишним.

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

Заранее спасибо!

02.02.2013

  • Используйте файл начальной загрузки и загрузите в него свою конфигурацию. 02.02.2013
  • указатель на некоторые указатели начальной загрузки: stackoverflow.com/questions/3313950/php-bootstrapping-basics 02.02.2013
  • включите 'config.php' вверху, затем получите доступ к $ GLOBALS ['config'] ['debug'] в любом месте 02.02.2013

Ответы:


1

Объявление переменной в одном классе (config.php), а затем использование ее в другом - плохая практика. Вы должны вернуть массив конфигурации из файла конфигурации, а затем вы можете назначить его переменной или передать его в качестве аргумента, если требуется.

Попробуйте что-то вроде этого:

config.php:

<?php
return array( /* ... config values ... */ );

user.php:

<?php
class User { 
    private $config;

    public function __construct(array $config) {
        $this->config = $config;
        if ($this->config['debug']) {
            // debug
        }
    }

    public function someOtherMethod() {
        if ($this->config['debug']) {
            // debug
        }
    }
}

телефонный код:

<?php
$user = new User(require 'config.php');
$user->someOtherMethod();
02.02.2013
  • В итоге я посмотрел на метод Wordpress, и они используют определения PHP, которые мне больше нравятся, спасибо за помощь! 13.02.2013
  • Новые материалы

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

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

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

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

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

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

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