powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Как лучше сделать класс-заглушку?
4 сообщений из 4, страница 1 из 1
PHP: Как лучше сделать класс-заглушку?
    #39988871
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс, представляющий некий объект со вложенными свойствами-объектами.
Используется, например, так:
Код: php
1.
$frm->sections('section1')->fields('field2')->value()


Здесь $frm это объект-контейнер FormData, sections() это метод, возвращающий объект-секцию FormSection (по имени секции), у которого есть метод fields(), возвращающий объект-поле FormField (по имени поля), у которого есть метод value(), возвращающий некое значение.
Пока все секции и поля существуют, все работает отлично.
Но допустим в объекте не существует секции section1. Если метод sections() вернет null, то тогда в данной строчке возникнет ошибка, поскольку у null не существует метода fields и т.д.
Как вообще подобные подходы реализуются (когда по различным причинам нужно использовать одну строку-конвейер, а не разбивать на несколько строк), если класс хочется сделать максимально толерантным ко всевозможным ошибкам использования?
Можно обернуть строку в try-catch и обрабатывать исключения, но это неудобно в использовании.
Можно вместо null возвращать некий объект-заглушку, который с помощью магии на вызов любого метода возвращает сам себя, а на обращение к любому свойству возвращает null. На первый взгляд этот способ недостатков не имеет, кроме того, что в логических сравнениях он будет возвращать true, а не false, но может быть я что-то упускаю.
Или может существуют другие практики?
...
Рейтинг: 0 / 0
PHP: Как лучше сделать класс-заглушку?
    #39988888
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
null safe operator

появится в php 8.
...
Рейтинг: 0 / 0
PHP: Как лучше сделать класс-заглушку?
    #39988903
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне бы для PHP 5/7 (причем больше для 5).
А вообще да, управление подобным поведением "из коробки" было бы удобнее всего.
...
Рейтинг: 0 / 0
PHP: Как лучше сделать класс-заглушку?
    #39989234
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кидай исключение если такой секции/поля нет
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Как лучше сделать класс-заглушку?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]