Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
75.00% covered (warning)
75.00%
6 / 8
72.73% covered (warning)
72.73%
8 / 11
CRAP
65.85% covered (warning)
65.85%
27 / 41
Human
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
3 / 3
 __construct($name)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 __toString()
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
Man
100.00% covered (success)
100.00%
1 / 1
 
 
0  
 
Woman
100.00% covered (success)
100.00%
1 / 1
 
 
0  
 
Person
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 __construct(Human $human)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
Driver
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 __construct(Person $person)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
Car
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 __construct(Driver $driver, Person $passenger)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
DynamicContainer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
4.12
50.00% covered (warning)
50.00%
2 / 4
 __call($methodName, $args)
0.00% covered (danger)
0.00%
0 / 1
2.15
66.67% covered (warning)
66.67%
2 / 3
 getService($serviceName)
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
ConfigFileContainer
0.00% covered (danger)
0.00%
0 / 1
75.00% covered (warning)
75.00%
3 / 4
5.40
55.56% covered (warning)
55.56%
15 / 27
 __construct($path)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
8 / 8
 getSpeciffic()
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 12
 getSpecifficContainer()
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
5 / 5
 anonymous function ($name) use ($c)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
/**
 *
 */
namespace aae\examples {
    class Human {
        public function __construct($name) {
            $this->name = $name;
        }
        public function __toString() {
            return $this->name;
        }
    }
    class Man extends Human {
    }
    class Woman extends Human {
    }
    class Person {
        public function __construct(Human $human) {
            $this->$human = $human;
        }
    }
    class Driver {
        public function __construct(Person $person) {
            $this->person = $person;
        }
    }
    class Car {
        public function __construct(Driver $driver, Person $passenger) {
            $this->driver = $driver;
            $this->passenger = $passenger;
        }
    }
}
namespace aae\dic {
    /**
     * @author Axel Ancona Esselmann
     * @package aae\dic
     */
    
    class DynamicContainer {
        public function __call($methodName, $args) {
            if(is_callable(array($this, $methodName))) {
                return call_user_func_array($this->$methodName, $args);
            }
        }
        public function getService($serviceName) {
        }
    }
    
    class ConfigFileContainer {
        public function __construct($path) {    
            //print($path);        
            $container = $this->getSpecifficContainer();
            $driver = $container->getCarDriver("Axel");
            $passenger = $container->getCarPerson("Sam");
            $car = New \aae\examples\Car(
                $container->getCarDriver("Axel"),
                $container->getCarPerson("Sam")
            );
            #print_r($car);
        }
        public function getSpeciffic() {
            return array(
                "car" => array(
                    "aae\examples\Car" => array(
                        "driver1" => array(
                            "aae\examples\Driver" => "/person1"
                        ),
                        "driver2" => array(
                            "aae\examples\Driver" => "/person2"
                        ),
                        "passenger1" => "/person1",
                        "passenger2" => "/person2"
                    )
                ),
                "person1" => array(
                    "aae\examples\Person" => array(
                        "man" => array(
                            "aae\examples\Man" => "Axel"
                        )
                    )
                ),
                "person2" => array(
                    "aae\examples\Person" => array(
                        "man" => array(
                            "aae\examples\Woman" => "Sam"
                        )
                    )
                )
            );
        }
        public function getSpecifficContainer() {
            $c = new DynamicContainer();
            $c->getCarDriverPersonMan = function ($name) {
                return new \aae\examples\Man($name);
            };
            $c->getCarDriverPerson = function ($name) use ($c) {
                return new \aae\examples\Person($c->getCarDriverPersonMan($name));
            };
            $c->getCarDriver = function ($name) use ($c) {
                return new \aae\examples\Driver($c->getCarDriverPerson($name));
            };
            $c->getCarPersonWoman = function ($name) {
                return new \aae\examples\Woman($name);
            };
            $c->getCarPerson = function ($name) use ($c) {
                return new \aae\examples\Person($c->getCarPersonWoman($name));
            };
            /*$c->getPerson = function (\Human $manOrWoman) {
                return new \Person($manOrWoman);
            };
            $c->getDriverPerson = function (\Human $manOrWoman) use ($c) {
                return new \Driver($c->getPerson($manOrWoman));
            };*/
            return $c;
        }
        
    }
}