"ленивый" __set(), есть идеи? Собствено внутри класса есть массив, в который часто пишутся / читаются данные в коде, вида:$this->fields['somefield'] = $someVal;
для чтения я сляпал быстрый геттер:public function __get($name){
if($name == 'f'){
return (object) $this->fields;
}
else return false;
}
и теперь $this->f->somefield красиво отдает из массива значение по ключу.
а с сеттером в стиле $this->f->somefield = $someval; что-то я туплю... Хелп...
ПС: всем спасибо, опять же поймал себя на том что не всегда очевидные мелкие детали меняют картину в целом. Изврат нужен для переопределения ключей от нескольких сторонних апи с большим количеством полей, по этому код выходит скучный, мерзкий, однообразный и простынеподобный. Захотелось слегка упростить ручную работу.

21 Авг 2019 в 06:59
183 +1
0
Ответы
1

Для реализации сеттера в стиле $this->f->somefield = $someval можно использовать магический метод __set(). Примерно так:

public function __set($name, $value){
if($name == 'f'){
// проверяем, что переданный $value является массивом
if(is_array($value)){
$this->fields = $value;
}
}
}

Теперь вы сможете устанавливать значения в массив fields, используя выражение $this->f->somefield = $someval. Надеюсь, это поможет вам в решении проблемы!

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир