. */ declare(strict_types=1); namespace FireflyIII\TransactionRules\Factory; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; use FireflyIII\TransactionRules\Expressions\ActionExpressionLanguageProvider; class ExpressionLanguageFactory { protected static ExpressionLanguage $expressionLanguage; private static function constructExpressionLanguage(): ExpressionLanguage { $expressionLanguage = new ExpressionLanguage(); $expressionLanguage->registerProvider(new ActionExpressionLanguageProvider()); return $expressionLanguage; } public static function get(): ExpressionLanguage { return self::$expressionLanguage ??= self::constructExpressionLanguage(); } }