Пример #1
0
 public function data($string = '', $data = array())
 {
     // Parametre konrolleri sağlanıyor.
     if (!is_string($string)) {
         return Error::set('Error', 'stringParameter', 'string');
     }
     $eol = eol();
     // Veri dizisi boş değilse işlemleri gerçekleştir.
     if (!empty($data)) {
         $space = '\\s*';
         $all = '.*';
         foreach ($data as $key => $val) {
             // Eleman dizi değilse değiştirme işlemi gerçekleştir.
             if (!is_array($val)) {
                 $key = $this->ldel . $space . $key . $space . $this->rdel;
                 $string = preg_replace('/' . $key . '/', $val, $string);
             } else {
                 $allString = '';
                 $newResult = '';
                 if (!empty($val)) {
                     $kstart = $this->ldel . $space . $key . $space . $this->rdel;
                     $kend = $this->ldel . $space . '\\/' . $space . $key . $space . $this->rdel;
                     preg_match('/' . $kstart . $all . $kend . '/s', $string, $result);
                     if (!empty($result)) {
                         // Bloğu değiştirme ve çoğalatma
                         // işlemi gerçekleştir.
                         foreach ($result as $res) {
                             // Değiştirme işlemlerini gerçekleştir.
                             foreach ($data[$key] as $item) {
                                 $newResult = preg_replace('/' . $kstart . '/', '', $res);
                                 $newResult = preg_replace('/' . $kend . '/', '', $newResult);
                                 $allString .= $this->data($newResult, $item) . $eol;
                             }
                             $string = str_replace($res, $allString, $string);
                         }
                     }
                 }
             }
         }
     }
     $regexChar = '(([^@]|(\'|\\").*?(\'|\\"))*)';
     $htmlRegexChar = '.*?';
     $pattern = array('/\\s*\\#end(\\w+)/i' => '</$1>', '/\\#\\#(\\!*\\w+)\\s*\\((' . $htmlRegexChar . ')\\)/i' => '<$1 $2>', '/\\s*\\#\\#(\\w+)/i' => '</$1>', '/\\#(\\!*\\w+)\\s*\\((' . $htmlRegexChar . ')(\\s*\\,\\s*(' . $htmlRegexChar . '))*\\)/i' => '<$1 $4>$2</$1>', '/\\#(\\!*\\w+)\\s*(\\[(' . $htmlRegexChar . ')\\])*\\s*/i' => '<$1 $3>', '/\\<(\\!*\\w+)\\s+\\>/i' => '<$1>', '/\\$\\(\'\\s*\\<(.*?)\\>\\s*\'\\)/i' => '$(\'#$1\')', '/\\$\\(\\"\\s*\\<(.*?)\\>\\s*\\"\\)/i' => '$("#$1")', '/@(if)\\s*(\\(' . $htmlRegexChar . '\\))' . $eol . '\\s*/' => '<?php $1$2: ?>', '/\\s*@(elseif)\\s*(\\(' . $htmlRegexChar . '\\))' . $eol . '\\s*/' => '<?php $1$2: ?>', '/\\s*@(endif)/' => '<?php $1 ?>', '/@(foreach)\\s*(\\(' . $htmlRegexChar . '\\))' . $eol . '\\s*/' => '<?php $1$2: ?>', '/\\s*@(endforeach)/' => '<?php $1 ?>', '/@(for)\\s*(\\(' . $htmlRegexChar . '\\))' . $eol . '\\s*/' => '<?php $1$2: ?>', '/\\s*@(endfor)/' => '<?php $1 ?>', '/@(while)\\s*(\\(' . $htmlRegexChar . '\\))' . $eol . '\\s*/' => '<?php $1$2: ?>', '/\\s*@(endswhile)/' => '<?php $1 ?>', '/@(break)/' => '<?php $1 ?>', '/@(continue)/' => '<?php $1 ?>', '/@(default)/' => '<?php $1: ?>', '/@@((\\w+|\\$|::|\\s*\\-\\>\\s*)*\\s*\\(' . $regexChar . '\\))/' => '<?php echo $1 ?>', '/@((\\w+|\\$|::|\\s*\\-\\>\\s*)*\\s*\\(' . $regexChar . '\\))/' => '<?php $1 ?>', '/@(\\$\\w+(\\$|::|\\s*\\-\\>\\s*|\\(' . $regexChar . '\\))*)/' => '<?php echo $1 ?>', '/\\{\\-\\-\\s*(' . $htmlRegexChar . ')\\s*\\-\\-\\}/' => '<!--$1-->', '/\\{\\{\\{\\s*(' . $htmlRegexChar . ')\\s*\\}\\}\\}/' => '<?php echo htmlentities($1) ?>', '/\\{\\{(\\s*' . $htmlRegexChar . ')\\s*\\}\\}/' => '<?php echo $1 ?>', '/\\{\\[\\s*(' . $htmlRegexChar . ')\\s*\\]\\}/' => '<?php $1 ?>');
     $string = preg_replace(array_keys($pattern), array_values($pattern), $string);
     if (is_array($data)) {
         extract($data, EXTR_OVERWRITE);
     }
     ob_start();
     @eval("?>{$string}");
     $content = ob_get_contents();
     ob_end_clean();
     if ($lastError = Error::last()) {
         Exceptions::table('', $lastError['message'], '', $lastError['line']);
     } else {
         return $content;
     }
 }
Пример #2
0
//--------------------------------------------------------------------------------------------------
if (is_file($isFile)) {
    require_once $isFile;
    if (!class_exists($page, false)) {
        $page = $namespace . $page;
    }
    if (class_exists($page, false)) {
        if (strtolower($function) === 'index' && !is_callable([$page, $function])) {
            $function = 'main';
        }
        if (is_callable([$page, $function])) {
            try {
                uselib($page)->{$function}(...$parameters);
            } catch (\Throwable $e) {
                if (PROJECT_MODE !== 'publication') {
                    \Exceptions::table($e->getCode(), $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTrace());
                }
            }
        } else {
            if ($routeShow404 = Config::get('Services', 'route')['show404']) {
                redirect($routeShow404);
            } else {
                report('Error', lang('Error', 'callUserFuncArrayError', $function), 'SystemCallUserFuncArrayError');
                die(Errors::message('Error', 'callUserFuncArrayError', $function));
            }
        }
    }
} else {
    if ($routeShow404 = Config::get('Services', 'route')['show404']) {
        redirect($routeShow404);
    } else {