/** * @param string $identifier * @param string|null $locale * @return string * @throws \Exception */ public static function getString($identifier, $locale = null) { if (is_null($locale)) { $locale = Config::getConfigField("locale"); } $localePath = FinanCalc::getPath() . "/locale/{$locale}.php"; if (!file_exists($localePath)) { return null; } /** @noinspection PhpIncludeInspection */ $strings = (include $localePath); if (!is_array($strings) || !array_key_exists($identifier, $strings)) { return null; } return $strings[$identifier]; }
/** * * PRIVATE functions * */ private function populateFactoryClassesArray() { $factoryFiles = glob(FinanCalc::getPath() . Config::getConfigField('factories_relative_path') . '/*.php'); $factoriesNamespace = Config::getConfigField('factories_namespace'); foreach ($factoryFiles as $factoryFile) { $factoryFileContents = file_get_contents($factoryFile); $fileTokens = token_get_all($factoryFileContents); $numTokens = count($fileTokens); for ($i = 2; $i < $numTokens; $i++) { if ($fileTokens[$i - 2][0] == T_CLASS) { $factoryClassName = $fileTokens[$i][1]; try { /** @noinspection PhpIncludeInspection */ require_once $factoryFile; $factoryClassReflector = new ReflectionClass($factoriesNamespace . '\\' . $factoryClassName); } catch (ReflectionException $e) { error_log(ErrorMessages::getFactoryClassExpectedInNamespaceMessage($factoryClassName, $factoriesNamespace)); continue; } $factoryAbstractClass = 'FinanCalc\\Interfaces\\Calculator\\CalculatorFactoryAbstract'; if ($factoryClassReflector->isSubclassOf($factoryAbstractClass)) { $this->factoryClasses[$factoryClassName] = $factoryClassReflector->newInstance(); break; } else { error_log(ErrorMessages::getFactoryClassExpectedAncestorMessage($factoryClassName, $factoryAbstractClass)); } } } } }