Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
153 lines (92 sloc) 5 KB

API Documentation

Select::setNamespace(string $namespace)

Set the default namespace for classes, a prefix string used to build class names.

Notes

Both "old style" and proper namespaces are supported, e.g.

    Select::setNamespace('MyApp_')
    Select::setNamespace('MyApp\\')

If a class does not exist in the namespace, the search occurs in the global space, e.g.

    Select::setNamespace('MyApp_')
    Select::getClass('Foo')             // returns 'MyApp_Foo'
    Select::getClass('XSLTProcessor')   // returns 'XSLTProcessor'

Select::resetNamespace()

Reset the default namespace as defined in the class.

Notes

The default namespace is empty but can be overridden extending the base class, e.g.

    namespace MyApp;
    class DI extends \Select {
        const DEFAULT_NAMESPACE = 'MyApp\\';
        static protected $_namespace = self::DEFAULT_NAMESPACE;
    }

Select::replaceClass(string $oldClass, string $newClass)

Replace a class so that new objects and static calls will use the new class.

Notes

The old class name must be passed without namespace, e.g.

    Select::replaceClass('Mailer', 'FakeMailer')                // correct
    
    Select::replaceClass('Mailer', 'Mocks\Mailer')              // correct
    
    Select::setNamespace('')
    Select::replaceClass('MyApp\Mailer', 'Mocks\Mailer')        // correct
    
    Select::setNamespace('MyApp\\')
    Select::replaceClass('MyApp\Mailer', 'Mocks\Mailer')        // wrong

Select::getClass(string $class)

Return a class name.

  • If there is a class in the defined namespace this is returned,
  • otherwise if there is a class in the global space, this is returned,
  • otherwise returns the class in the defined namespace.

Examples

    Select::setNamespace('MyApp_')
    Select::getClass('Foo')
        * 'MyApp_Foo' does not exist
        * 'Foo' does not exist
        * return 'MyApp_Foo'

    Select::setNamespace('MyApp_')
    Select::getClass('XSLTProcessor')
        * 'MyApp_XSLTProcessor' does not exist
        * 'XSLTProcessor' exists
        * return 'XSLTProcessor'

    Select::setNamespace('MyApp_')
    // ... define a class MyApp_XSLTProcessor in the application ...
    Select::getClass('XSLTProcessor')
        * 'MyApp_XSLTProcessor' exists
        * return 'MyApp_XSLTProcessor'

Select::resetClass(string $class)

Remove replacements for the specified class.

Notes

The class name must be passed without namespace

Examples

    Select::setNamespace('MyApp_')
    Select::getClass('XSLTProcessor')                           // returns 'XSLTProcessor'
    Select::replaceClass('XSLTProcessor', 'MyApp_XSLTProcessor') 
    Select::getClass('XSLTProcessor')                           // returns 'MyApp_XSLTProcessor'
    Select::resetClass('XSLTProcessor')
    Select::getClass('XSLTProcessor')                           // returns 'XSLTProcessor'

Select::resetClasses()

Remove all defined replacements, restore default behaviour.

Select::create(string $class)

Return a new object of the specified class.

Notes

The class name must be passed without namespace

Select::get<Dependency name>()

Get a defined dependency. If the dependency is not defined throws and exception. If the dependency is explicitly defined as a multiton it always returns a new object.

Select::set<Dependency name>(object $object)

Define and store the passed object as a new dependency. Overwrite any existing dependency with the same name. The dependency is considered to be a singleton.

Select::def<Dependency name>(string $class, array $contructorParameters, boolean $isSingleton)

Define a new dependency, without instantiating the object. Overwrite any existing dependency with the same name. Constructor parameters can be passed after the class name. By default the dependency is defined to be a singleton, this can be overridden with the third parameter.

Examples

    Select::setMailer('Mailer')
    Select::setMailer('Mailer', array('smtp.gmail.com', 465))
    Select::setMailer('Mailer', array('smtp.gmail.com', 465), false)

Select::ini<Dependency name>()

Define a new dependency, instantiating and returning the object. Overwrite any existing dependency with the same name. Constructor parameters can be passed after the class name. By default the dependency is defined to be a singleton, this can be overridden with the third parameter.

Examples

    Select::iniMailer('Mailer')->setSender('root@localhost')
    Select::iniMailer('Mailer', array('smtp.gmail.com', 465))->setSender('root@localhost')
    Select::iniMailer('Mailer', array('smtp.gmail.com', 465), false)->setSender('root@localhost')