/** * Allows the class to be configured with custom dependencies. * * @param array $config An array containing a `'classes'` key. * @return void */ public static function config(array $config = array()) { if (isset($config['classes'])) { static::$_classes = array_merge(static::$_classes, $config['classes']); } return array('classes' => static::$_classes); }
public static function config($config = array()) { if (!$config) { return array('classes' => static::$_classes); } if (isset($config['classes'])) { static::$_classes = $config['classes'] + static::$_classes; } }
/** * Configures the class or retrieves current class configuration. * * @param array $config Available configuration options are: * - `'classes'` _array_: May be used to inject dependencies. * - `'secret'` _string_: *Must* be provided. * @return array|void If `$config` is empty, returns an array with the current configurations. */ public static function config(array $config = array()) { if (!$config) { return array('classes' => static::$_classes, 'secret' => static::$_secret); } if (isset($config['classes'])) { static::$_classes = $config['classes'] + static::$_classes; } if (isset($config['secret'])) { static::$_secret = $config['secret']; } }
/** * Configures the model for use. This method is called by `Model::__init()`. * * This method will set the `Model::$_schema`, `Model::$_meta`, `Model::$_finders` class * attributes, as well as obtain a handle to the configured persistent storage connection. * * @param array $options Possible options are: * - `meta`: Meta-information for this model, such as the connection. * - `finders`: Custom finders for this model. * @return void */ public static function config(array $options = array()) { if (static::_isBase($class = get_called_class())) { return; } $self = static::_object(); $query = array(); $meta = array(); $schema = array(); $source = array(); $classes = static::$_classes; foreach (static::_parents() as $parent) { $parentConfig = get_class_vars($parent); foreach (array('meta', 'schema', 'classes', 'query') as $key) { if (isset($parentConfig["_{$key}"])) { ${$key} += $parentConfig["_{$key}"]; } } if ($parent == __CLASS__) { break; } } $tmp = $options + $self->_meta + $meta; $source = array('meta' => array(), 'finders' => array(), 'schema' => array()); if ($tmp['connection']) { $conn = $classes['connections']::get($tmp['connection']); $source = ($conn ? $conn->configureClass($class) : array()) + $source; } static::$_classes = $classes; $name = static::_name(); $local = compact('class', 'name') + $options + $self->_meta; $self->_meta = $local + $source['meta'] + $meta; $self->_meta['initialized'] = false; $self->_schema += $schema + $source['schema']; $self->_finders += $source['finders'] + $self->_findFilters(); static::_relations(); }
/** * Reset the class. */ public static function reset() { static::$_library = true; static::$_messages = null; static::$_classes = array('session' => 'lithium\\storage\\Session'); static::$_session = array('config' => 'default', 'base' => null); }
/** * Configures the Model. * * @param array $config Possible options are: * - `'classes'` _array_ : The classes dependency array. * - `'schema'` _object_: The schema instance to use. * - `'validator'` _object_: The validator instance to use. * - `'finders'` _object_: The finders instance to use. * - `'connection'` _object_: The connection instance to use. * - `'conventions'` _object_: The conventions instance to use. */ public static function config($config = []) { $defaults = ['classes' => static::$_classes, 'schema' => null, 'validator' => null, 'finders' => null, 'query' => [], 'connection' => null, 'conventions' => null]; $config = Set::merge($defaults, $config); static::$_classes = $config['classes']; static::conventions($config['conventions']); static::connection($config['connection']); static::schema($config['schema']); static::validator($config['validator']); static::finders($config['finders']); static::query($config['query']); }