Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.08.2020, 09:37
|
|||
|---|---|---|---|
PHP: Как лучше сделать класс-заглушку? |
|||
|
#18+
Есть класс, представляющий некий объект со вложенными свойствами-объектами. Используется, например, так: Код: php 1. Здесь $frm это объект-контейнер FormData, sections() это метод, возвращающий объект-секцию FormSection (по имени секции), у которого есть метод fields(), возвращающий объект-поле FormField (по имени поля), у которого есть метод value(), возвращающий некое значение. Пока все секции и поля существуют, все работает отлично. Но допустим в объекте не существует секции section1. Если метод sections() вернет null, то тогда в данной строчке возникнет ошибка, поскольку у null не существует метода fields и т.д. Как вообще подобные подходы реализуются (когда по различным причинам нужно использовать одну строку-конвейер, а не разбивать на несколько строк), если класс хочется сделать максимально толерантным ко всевозможным ошибкам использования? Можно обернуть строку в try-catch и обрабатывать исключения, но это неудобно в использовании. Можно вместо null возвращать некий объект-заглушку, который с помощью магии на вызов любого метода возвращает сам себя, а на обращение к любому свойству возвращает null. На первый взгляд этот способ недостатков не имеет, кроме того, что в логических сравнениях он будет возвращать true, а не false, но может быть я что-то упускаю. Или может существуют другие практики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.08.2020, 10:17
|
|||
|---|---|---|---|
PHP: Как лучше сделать класс-заглушку? |
|||
|
#18+
null safe operator появится в php 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.08.2020, 10:43
|
|||
|---|---|---|---|
PHP: Как лучше сделать класс-заглушку? |
|||
|
#18+
Мне бы для PHP 5/7 (причем больше для 5). А вообще да, управление подобным поведением "из коробки" было бы удобнее всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&mobile=1&tid=1459624]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
144ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 462ms |

| 0 / 0 |
