public function propertyInjection($classInstance, $controller)
    {
        $dependencies = $this->getPropertyDefinitionConfig($controller);
        $controller = "\\\\";

        if (array_key_exists($controller, $this->definitions)) {
            list($reflection, $reflectionClass) = $this->setReflectionClassAttributes($controller);
            
            foreach ($dependencies as $classProperty => $class) {
                $reflectionArray = [$reflectionClass, $classProperty];
                list($object, $controllerProp) = $this->checkPropertyAndMakeObject($controller, $class, $reflectionArray);
                
                /*
                 | We will check is set{PropertyName}() method exists in class.
                 | If exists we will call the method to set object into it
                 */
                if (method_exists($classInstance, 'set'.$controllerProp)) {
                    $classInstance->{'set'.$controllerProp}($object);
                } else {
                    $prop = $reflectionClass->getProperty($classProperty);
                    /*
                     | Check if property defined as static.
                     | we will throw exception is property defined as static
                     */
                    if ($prop->isStatic()) {
                        throw new DependencyException(
                            sprintf("Static Property '%s' is not injectable in $controller controller", $classProperty)
                        );
                    }

                    $this->setPropertyValue($reflection, $classInstance, $classProperty, $object);
                }
            }

            return true;
        }

        return false;
    }