/** * Get the Queued message and return it * * @param string $key * @return mixed * */ public function getFlash($key = null) { $messages = $flash = ''; if (!Session::has('flashMessages')) { return false; } $flashArray = Session::get('flashMessages'); // Check $key is valid flash type if (in_array($key, $this->validFlashTypes)) { if (isset($flashArray[$key])) { foreach ($flashArray[$key] as $msg) { $messages .= '<p>' . $msg . "</p>\n"; } } $flash .= sprintf($this->flashWrapper, strtolower(Inflector::getClassName($this->class)), $key, $messages); // clear the viewed messages from browser $this->clearViewedMessages($key); // Print ALL queued messages } elseif (is_null($key)) { foreach ($flashArray as $key => $msgArray) { $messages = ''; foreach ($msgArray as $msg) { $messages .= '<p>' . $msg . "</p>\n"; } $flash .= sprintf($this->flashWrapper, strtolower($this->class), $key, $messages); } // clear already viewed messages $this->clearViewedMessages(); // Invalid message type } else { return false; } return $flash; }
/** * We will inject interface implementation * * @param $reflectionParam * @return array */ public function interfaceInjection($reflectionParam) { $constructorArgs = null; /* | Check if constructor dependency is Interface or not. | if interface we will check definition for the interface | and inject into controller constructor */ if (!$reflectionParam->IsInstantiable() && $reflectionParam->isInterface()) { $aliases = $this['definition.config']['register.alias']; $interface = Inflector::getClassName($reflectionParam->getName()); if (array_key_exists($interface, $aliases)) { $constructorArgs = $this->makeInstance($aliases[$interface]); } } return $constructorArgs; }
/** * Resolve all dependencies of your class and return instance of * your class * * @param $class string * @throws \Exception * @return object */ public function make($class) { $reflection = new Reflection(); $reflection->setClass($class); if (false === $reflection->reflectionClass->isInstantiable()) { throw new DependencyException("Cannot instantiate " . ($reflection->reflectionClass->isInterface() ? 'interface' : 'class') . " '{$class}'"); } $constructor = null; $constructorArgsCount = ''; if ($reflection->reflectionClass->hasMethod('__construct')) { $constructor = $reflection->reflectionClass->getConstructor(); $constructorArgsCount = $constructor->getNumberOfParameters(); $constructor->setAccessible(true); } // if class does not have explicitly defined constructor or constructor does not have parameters // get the new instance if (!isset($constructor) && is_null($constructor) || $constructorArgsCount < 1) { $this->stack[$class] = $reflection->reflectionClass->newInstance(); } else { $dependencies = $constructor->getParameters(); $constructorArgs = array(); foreach ($dependencies as $dependency) { if (!is_null($dependency->getClass())) { //Get constructor class name $resolveClass = $dependency->getClass()->name; $reflectionParam = new ReflectionClass($resolveClass); // Application and Container cannot be injected into controller currently // since Application constructor is protected if ($reflectionParam->IsInstantiable()) { $constructorArgs[] = $this->makeInstance($resolveClass); } /* | Check if constructor dependency is Interface or not. | if interface we will check definition for the interface | and inject into controller constructor */ if (!$reflectionParam->IsInstantiable() && $reflectionParam->isInterface()) { $definition = $this->getDefinition(); $aliases = $definition()->registerAlias(); $interface = Inflector::getClassName($reflectionParam->getName()); if (array_key_exists($interface, $aliases)) { $constructorArgs[] = $this->makeInstance($aliases[$interface]); } } } else { /* | Check parameters are optional or not | if it is optional we will set the default value */ if ($dependency->isOptional()) { $constructorArgs[] = $dependency->getDefaultValue(); } } } $this->stack[$class] = $reflection->reflectionClass->newInstanceArgs($constructorArgs); } return $this->stack[$class]; }
/** * Get Join class name * * @param $baseClass * @param $associatedClass * @return string */ private function getJoinClassName($baseClass, $associatedClass) { $classs = [Inflector::getClassName($baseClass), $associatedClass]; sort($classs, SORT_STRING); return join("", $classs); }
public function testGetClassNameMethod() { $this->assertEquals('Inflector', Inflector::getClassName('\\Cygnite\\Helpers\\Inflector')); }