'Solarified' Classes

Some tips to create 'Solarified' classes - classes that adhere to the Solar standards and guidelines.

  • Always extend Solar_Base (never extend Solar).
  • The constructor should only receive as parameter a config array, like all other Solar constructors.
  • The constructor also should call parent::__construct($config);
  • Set a protected class property named $_Class_Full_Name to store the class configuration array. Their default values can be overridden on construction, and the precedence order is:
    1. the config array passed to the constructor;
    2. the values set in config file;
    3. the default values set in the class.
  • Config values are accessible through the $this->_config['key'] property. In your config file, you can configure the class and those values will be used when you instantiate the class using Solar::factory():
$config['Class_Full_Name'] = array(
    'key' => 'value',
);

* The config array is available trough $this→_config, so, inside the class:

  • get config value: $value = $this->_config['key'];
  • set config value: $this->_config['key'] = $value;

* For exceptions you can use:

throw $this->_exception('ERR_CODE');
  • If you define ERR_CODE in the Locale file for the class (/[Class]/Locale/en_US.php) you will get a translated message string.
  • Also, $this->_exception('ERR_SOME_CODE') will look for /[Class]/Exception/SomeCode.php and throw it instead of a generic exception.

Class skeleton

class Vendor_Controller_Front extends Solar_Base {
 
   /**
    *
    * User-defined configuration array.
    *
    * @var array
    *
    */
   protected $_Vendor_Controller_Front = array(
   );
 
   /**
    *
    * Constructor.
    *
    * @param array $config User-provided configuration values.
    *
    */
   public function __construct($config)
   {
       // do the "real" construction
       parent::__construct($config);
 
       // continue with your constructor code
       [...]
   }
}
 
tips/solarified_classes.txt · Last modified: 2008/08/25 08:48 (external edit)