Это вопрос дизайна, который раздражал меня, потому что в глубине души я знаю, что делаю это неправильно. Это не обязательно просто проблема PHP, но сейчас я работаю над PHP-проектом, так что вот откуда я. Я просто дам вам сценарий: У меня есть класс поколения JSON, который используется сценарием доступа к данным. В основном это URL-адрес для веб-сайта, который создает экземпляр класса JSONGen, который, в свою очередь, просматривает статический файл и извлекает запрошенные данные и отправляет его как объект JSON. Файл, содержащий необработанные данные, имеет все размеры в формате массива, что позволяет упростить чтение и обновление (поэтому вам не нужно просеивать необработанные данные JSON и синтаксическую ошибку риска и т. Д.). Мой вопрос заключается в доступе к этому файлу. Я сделал это, чтобы разместить запрос ([json file]) вне определения класса. Все в [json-файле] присваивается одному объекту $ JSON. В конструкторе класса, я делаю:Include vs Расширение для доступа к данным
global $JSON;
$this->JSON = $JSON;
(где $ this-> JSON является переменным частным классом).
Это дает мне доступ к JSON из любого места класса, который прекрасен. Он чувствует себя взломанным, но я нигде не могу найти что-либо, обращаясь к этому конкретному типу подхода.
Проблема заключается в том, что, когда кто-то решает переместить класс или что-то еще, единственный способ понять зависимость этого файла заключается в том, что в заголовке есть инструкция require. Так ли это работает? Или есть лучший способ сделать это?
Должен ли я использовать удлинитель и помещать JSON в класс (THAT кажется действительно глупым для меня) или продолжить с моим включением? Или я никогда не буду включать файл в класс, подобный этому, и скорее передать его конструктору или другому методу доступа?
Этот конкретный экземпляр представляет собой небольшой проект, и просто не имеет смысла настраивать БД для него. Мы можем добавить в файл, изменить конфигурацию и все обновления сайта .... поэтому, пожалуйста, не говорите мне переключиться на DB-я ищу стратегии для этой конкретной проблемы в более общем смысле.
Спасибо!
Итак, если я правильно понял, включите результаты в создаваемый экземпляр? или вы создаете глобальный экземпляр? – Orangepill
Если вы создаете один глобальный экземпляр (создаете экземпляр и просто вызываете глобальное значение для этой переменной внутри методов и т. Д.), Просто превратите класс в статический класс. Тогда он будет глобальным автоматически. –
@jonathanKuhn, где я собирался ... – Orangepill