SlightPHP::run PHP Метод

run() публичный статический Метод

main method!
public static run ( string $path = "" ) : boolean
$path string
Результат boolean
        public static function run($path = "")
        {
            $splitFlag = preg_quote(self::$splitFlag, "/");
            $path_array = array();
            if (!empty($path)) {
                $isPart = true;
            } else {
                $isPart = false;
                if (!empty($_SERVER['PATH_INFO'])) {
                    $path = $_SERVER["PATH_INFO"];
                } elseif (!empty($_SERVER['REQUEST_URI'])) {
                    $path = $_SERVER["REQUEST_URI"];
                } else {
                    self::debug("path not set in params or server.path_info, server.request_uri");
                    return false;
                }
            }
            /* Skip leading / */
            $len = strlen($path);
            $start = 0;
            for ($start = 0; $start < $len; $start++) {
                if ($path[$start] != '/') {
                    break;
                }
            }
            $url_parsed = parse_url(substr($path, $start), PHP_URL_PATH);
            if (!empty($url_parsed)) {
                $url = $url_parsed;
            } else {
                $url = $path;
            }
            self::$pathInfo = $url;
            $path_array = preg_split("/[{$splitFlag}\\/]/", $url, -1);
            $zone = !empty($path_array[0]) ? $path_array[0] : self::$defaultZone;
            $page = !empty($path_array[1]) ? $path_array[1] : self::$defaultPage;
            $entry = !empty($path_array[2]) ? $path_array[2] : self::$defaultEntry;
            if (self::$zoneAlias && ($key = array_search($zone, self::$zoneAlias)) !== false) {
                $zone = $key;
            }
            if (!$isPart) {
                self::$zone = $zone;
                self::$page = $page;
                self::$entry = $entry;
            } else {
                if ($zone == self::$zone && $page == self::$page && $entry == self::$entry) {
                    self::debug("part ignored [{$path}]");
                    return false;
                }
            }
            $app_file = self::$appDir . DIRECTORY_SEPARATOR . $zone . DIRECTORY_SEPARATOR . $page . ".page.php";
            if (!is_file($app_file)) {
                self::debug("file[{$app_file}] does not exists");
                return false;
            } else {
                require_once realpath($app_file);
            }
            $method = "Page" . $entry;
            $classname = $zone . "_" . $page;
            if (!class_exists($classname, false)) {
                self::debug("class[{$classname}] does not exists");
                return false;
            }
            $path_array[0] = $zone;
            $path_array[1] = $page;
            $path_array[2] = $entry;
            $classInstance = new $classname($path_array);
            if (!method_exists($classInstance, $method)) {
                self::debug("method[{$method}] does not exists in class[{$classname}]");
                return false;
            }
            return call_user_func(array(&$classInstance, $method), $path_array);
        }

Usage Example

Пример #1
0
/**
 * Smarty {part} function part
 *
 * Type:     function<br>
 * Name:     part<br>
 * Purpose:  include slightphp part<br>
 * @author   Hetal <hetao at hetao dot name>
 * @param array
 * @param Smarty
 * @return string
 */
function smarty_function_part($params, &$smarty)
{
    return !empty($params['path']) ? SlightPHP::run($params['path']) : "";
}
All Usage Examples Of SlightPHP::run