Вычисляемые свойства объектов

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
nightwind
Сообщения: 332
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Контактная информация:

Вычисляемые свойства объектов

Сообщение nightwind »

В очень многих сценариях использования нет никакой необходимости хранить свойства объектов в базе. К примеру - сделал астрономический объект, который вычисляет все-все. И как я вижу, очень нелогично хранить эти вычисленные значения, а так же периодически их перевычислять-актуализировать. Гораздо удобнее сделать свойства функцией, вычисляющей значения по запросу.
Понятное дело, можно сделать метод update() обновляющий все свойства, и вызывать его каждый раз перед обращением к свойству. Но это лишние расходы, лишнее место в базе, лишняя нагрузка на mysql.
пысы - аргументами, что современному компу пофиг, 20 там значений или 20 000 в базе - не принимаются. у меня крутится на распберри первом, с базой в tmpfs. и я очень сторонник оптимизации, чем покупки 120-ядерного core i10
пыпысы. я конечно могу сделать объект в php файле, и никаких проблем. но для непрограммеров такое решение очень не подходит, да?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

Re: Вычисляемые свойства объектов

Сообщение olehs »

у непрограммеров на этот случай как раз и имеется corei10 :lol:
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

Re: Вычисляемые свойства объектов

Сообщение olehs »

а если по делу: методы объектов умеют принимать аргументы и возвращать значения
Аватара пользователя
nightwind
Сообщения: 332
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Контактная информация:

Re: Вычисляемые свойства объектов

Сообщение nightwind »

Olehs, ткни носом, как??
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

Re: Вычисляемые свойства объектов

Сообщение olehs »

Предположим есть метод Computer.power2 c кодом

Код: Выделить всё

return $params['n'] * $params['n'];
Тогда вызов его, например, так:

Код: Выделить всё

cm('power2', array(n=>8))
вернет 64
Ответить