Craft\StatePersister » CStatePersister (opens new window) » CApplicationComponent (opens new window) » CComponent (opens new window)
IApplicationComponent, IStatePersister

StatePersister implements a file-based persistent data storage.

It can be used to keep data available through multiple requests and sessions.

By default, StatePersister stores data in a file named 'state.bin' that is located {@link PathService::getStatePath()}.

To retrieve the data from StatePersister, call {@link load()}. To save the data, call {@link save()}.

A comparison among state persister, session and cache is as follows:

  • Session: data persisting within a single user session.
  • State Persister: data persisting through all requests/sessions (e.g. hit counter).
  • Cache: volatile and fast storage. It may be used as storage medium for session or state persister.

Since server resource is often limited, be cautious if you plan to use StatePersister to store large amount of data. You should also consider using database-based persister to improve the throughput.

StatePersister is a core application component used to store global application state. It may be accessed via {@link WebApp::getStatePersister()}.

Craft overrides the default {@link \CStatePersister} so it can set a custom path at runtime for our state file.

See also

View source (opens new window)

# Public Properties

Property Description
$behaviors (opens new window) array (opens new window) – The behaviors that should be attached to this component.
$cacheID (opens new window) string (opens new window) – The ID of the cache application component that is used to cache the state values.
$stateFile (opens new window) string (opens new window) – The file path storing the state data.

# Public Methods

Method Description
__call() (opens new window) Calls the named method which is not a class method.
__get() (opens new window) Returns a property value, an event handler list or a behavior based on its name.
__isset() (opens new window) Checks if a property value is null.
__set() (opens new window) Sets value of a component property.
__unset() (opens new window) Sets a component property to be null.
asa() (opens new window) Returns the named behavior object.
attachBehavior() (opens new window) Attaches a behavior to this component.
attachBehaviors() (opens new window) Attaches a list of behaviors to the component.
attachEventHandler() (opens new window) Attaches an event handler to an event.
canGetProperty() (opens new window) Determines whether a property can be read.
canSetProperty() (opens new window) Determines whether a property can be set.
detachBehavior() (opens new window) Detaches a behavior from the component.
detachBehaviors() (opens new window) Detaches all behaviors from the component.
detachEventHandler() (opens new window) Detaches an existing event handler.
disableBehavior() (opens new window) Disables an attached behavior.
disableBehaviors() (opens new window) Disables all behaviors attached to this component.
enableBehavior() (opens new window) Enables an attached behavior.
enableBehaviors() (opens new window) Enables all behaviors attached to this component.
evaluateExpression() (opens new window) Evaluates a PHP expression or callback under the context of this component.
getEventHandlers() (opens new window) Returns the list of attached event handlers for an event.
getIsInitialized() (opens new window) Checks if this application component has been initialized.
hasEvent() (opens new window) Determines whether an event is defined.
hasEventHandler() (opens new window) Checks whether the named event has attached handlers.
hasProperty() (opens new window) Determines whether a property is defined.
init() Initializes the component.
load() (opens new window) Loads state data from persistent storage.
raiseEvent() (opens new window) Raises an event.
save() Saves application state in persistent storage.

# init()

Initializes the component.

View source (opens new window)


null (opens new window)


public null init ( )

# save()

Saves application state in persistent storage.

View source (opens new window)


  • $state (mixed) – The state data (must be serializable).


public void save ( $state )

# Protected Methods

Method Description
getContent() (opens new window) Loads content from file using a shared lock to avoid data corruption when reading the file while it is being written by save()