Ejemplo n.º 1
0
 private function readIoCStructure(XMLReader $classesDOM)
 {
     $classes = new IoCClasses();
     while ($classesDOM->read()) {
         if ($classesDOM->name == 'class' || $classesDOM->name == 'factory') {
             $name = $classesDOM->getAttribute('name');
             $alias = $classesDOM->getAttribute('alias');
             $scope = $classesDOM->getAttribute('scope');
             $alias = $alias ? $alias : $name;
             switch ($scope) {
                 case 'singleton':
                     $scope = IoCClass::CLASSSCOPE_SINGLETON;
                     break;
                 case 'global':
                     $scope = IoCClass::CLASSSCOPE_GLOBAL;
                     break;
                 default:
                 case 'prototype':
                     $scope = IoCClass::CLASSSCOPE_PROTOTYPE;
                     break;
             }
             $class = $classesDOM->name == 'class' ? $classes->createClass($name, $alias, $scope) : $classes->createClassFactory($name, $alias, $scope);
             $this->setClassConfiguration($class, $classesDOM);
         }
     }
     return $classes;
 }
Ejemplo n.º 2
0
class factoryA extends printSelf implements IoCClassFactorable
{
    public function produce($instance)
    {
        $instance->producedProperty = 'yes, I was produced in the super factory';
        return $instance;
    }
}
/*
 * We need to configure the IoC Factory
 * telling where it will find the configuration
 * xml file.
 *
 * THIS IS MANDATORY, DEFAULT XML FILE IS NO LONGER AVAILABLE
 */
$IoCConfiguration = new IoCClasses();
$XMLParser = new IoCXMLParser();
$IoCConfiguration->merge($XMLParser->parseFile(dirname(__FILE__) . '/conf.xml'));
/*
$IoCConfiguration
->createClass('injected', false, IoCClass::CLASSSCOPE_SINGLETON);
*/
$IoCConfiguration->createClass('injectionA')->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_REF, 'injected'))->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_EVAL, '$_SERVER[\'some\']'))->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_VALUE, 'some some'));
/*
$IoCConfiguration->createClass('injectionB')
	->createSetter('set_injected')
->withArgument(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_REF, 'injected'));
*/
$IoCConfiguration->createClass('injectionD')->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_REF, 'injected'))->createSetter('setCaca')->withArgument(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_EVAL, '$_SERVER[\'some\']'))->withProperty('property', new IoCArgumentValue(IoCArgumentValue::VALUETYPE_VALUE, 'property'))->createSetter('setString')->withArgument(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_VALUE, 'some some'));
$IoCConfiguration->createClass('injectionA', 'injASingletonated', IoCClass::CLASSSCOPE_SINGLETON)->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_REF, 'injected'))->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_EVAL, '$_SERVER[\'some\']'))->withConstructArg(new IoCArgumentValue(IoCArgumentValue::VALUETYPE_VALUE, 'some some'));
//print_r($IoCConfiguration);
Ejemplo n.º 3
0
 public function merge(IoCClasses $anotherClasses)
 {
     $this->classes = array_merge($this->classes, $anotherClasses->getClassesArray());
 }