language = new TestExpressionLanguage($container); $this->registerFunctions(); } /** * @param mixed $data Process data send to server and replace patterns. * * @return mixed */ public function process($data) { if (is_array($data)) { // Recursively process arrays. return array_map(function ($data) { return $this->process($data); }, $data); } elseif (is_string($data)) { // Process string data. $replacer = function ($param) { // Sanitize params. $param = str_replace('\\"', '\'', trim(current($param), '#')); return $this->language->evaluate($param); }; return preg_replace_callback("/#.+?#/", $replacer, $data); } // Not change other variable types. return $data; } /** * @param mixed $arguments Arguments specified by expression language. * @param mixed $time Pass to DateTime constructor. * * @return \DateTime * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function createDate($arguments, $time = 'now') { return new \DateTime($time); } /** * Register custom expression language functions. * * @return void */ private function registerFunctions() { $dummy = function () { // do nothing. }; $this->language->register('date', $dummy, [ $this, 'createDate' ]); } }