Download the PHP package openbuildings/jam-freezable without Composer
On this page you can find all versions of the php package openbuildings/jam-freezable. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download openbuildings/jam-freezable
More information about openbuildings/jam-freezable
Files in openbuildings/jam-freezable
Package jam-freezable
Short Description Freeze dynamically computed values in the database using Jam
License BSD-3-Clause
Homepage https://github.com/OpenBuildings/jam-freezable
Informations about the package jam-freezable
Freezable Behavior
Freezable is a Jam ORM behavior for freezing dynamically computed values in the database.
Often one would have a method in the model which computes and returns a value. It could be a price, time or anything else. The computation could be a heavy one or time sensitive (based on time, currency exchange rates and other). Then you would need to save the value in a database column (a.k.a freezing) and in the future read the value from the field rather than the method.
The Freezable behavior allows you to do exactly that in an easy way.
The freeze()
, unfreeze()
and is_frozen()
methos give you the convenience to easily get either the dynamically computed or the frozen value when needed.
Usage
It has 3 parameters associations
, parent
and fields
That means that whenever the model is frozen then the field named price
will be assigned the value of the method price()
.
And all the associations will be also frozen. The associations themselves have to be freezable (have the Freezable behavior attached) in order for this to work. And the price()
method, as well as any other fields, have to take into account the value of the field. E.g.
The parent association is used in order to find the value of is_frozen
, so that only one model holds the value of the flag. So that if you call is_frozen()
on a freezable that has a parent, then it will get that value from the parent.
Details
TODO: add note about validation TODO: add more examples
License
Copyright (c) 2013 OpenBuildings, Inc. Developed by Ivan Kerin as part of clippings.com.
Under BSD-3-Clause license, read LICENSE file.