Lime\App::__construct PHP Method

__construct() public method

Constructor
public __construct ( Array $settings = [] )
$settings Array initial registry settings
    public function __construct($settings = [])
    {
        $self = $this;
        $this->registry = array_merge(['debug' => true, 'app.name' => 'LimeApp', 'session.name' => 'limeappsession', 'autoload' => new \ArrayObject([]), 'sec-key' => 'xxxxx-SiteSecKeyPleaseChangeMe-xxxxx', 'route' => isset($_SERVER["PATH_INFO"]) ? $_SERVER["PATH_INFO"] : "/", 'charset' => 'UTF-8', 'helpers' => [], 'base_url' => implode("/", array_slice(explode("/", $_SERVER['SCRIPT_NAME']), 0, -1)), 'base_route' => implode("/", array_slice(explode("/", $_SERVER['SCRIPT_NAME']), 0, -1)), 'base_host' => isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : php_uname('n'), 'base_port' => isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : 80, 'docs_root' => null, 'site_url' => null], $settings);
        // app modules container
        $this->registry["modules"] = new \ArrayObject([]);
        if (!isset($this["site_url"])) {
            $this["site_url"] = $this->getSiteUrl(false);
        }
        if (!isset($this["docs_root"])) {
            $this["docs_root"] = str_replace(DIRECTORY_SEPARATOR, '/', isset($_SERVER['DOCUMENT_ROOT']) ? realpath($_SERVER['DOCUMENT_ROOT']) : dirname($_SERVER['SCRIPT_FILENAME']));
        }
        // make sure base + route url doesn't end with a slash;
        $this->registry["base_url"] = rtrim($this->registry["base_url"], '/');
        $this->registry["base_route"] = rtrim($this->registry["base_route"], '/');
        // default global viewvars
        $this->viewvars["app"] = $this;
        $this->viewvars["base_url"] = $this["base_url"];
        $this->viewvars["base_route"] = $this["base_route"];
        $this->viewvars["docs_root"] = $this["docs_root"];
        self::$apps[$this["app.name"]] = $this;
        // default helpers
        $this->helpers = new \ArrayObject(array_merge(['session' => 'Lime\\Session', 'cache' => 'Lime\\Cache'], $this->registry["helpers"]));
        // register simple autoloader
        spl_autoload_register(function ($class) use($self) {
            foreach ($self->retrieve("autoload", []) as $dir) {
                $class_file = $dir . '/' . str_replace('\\', '/', $class) . '.php';
                if (file_exists($class_file)) {
                    include_once $class_file;
                    return;
                }
            }
        });
        // check for php://input and merge with $_REQUEST
        if (isset($_SERVER["CONTENT_TYPE"]) && stripos($_SERVER["CONTENT_TYPE"], 'application/json') !== false || isset($_SERVER["HTTP_CONTENT_TYPE"]) && stripos($_SERVER["HTTP_CONTENT_TYPE"], 'application/json') !== false) {
            if ($json = json_decode(@file_get_contents('php://input'), true)) {
                $_REQUEST = array_merge($_REQUEST, $json);
            }
        }
    }

Usage Example

Beispiel #1
0
 public function __construct($settings = [])
 {
     $settings["helpers"] = array_merge(["acl" => "Lime\\Helper\\SimpleAcl", "assets" => "Lime\\Helper\\Assets", "fs" => "Lime\\Helper\\Filesystem", "image" => "Lime\\Helper\\Image", "i18n" => "Lime\\Helper\\I18n", "utils" => "Lime\\Helper\\Utils", "coockie" => "Lime\\Helper\\Cookie"], isset($settings["helpers"]) ? $settings["helpers"] : []);
     parent::__construct($settings);
     // renderer service
     $this->service('renderer', function () {
         $renderer = new \Lexy();
         //register app helper functions
         $renderer->extend(function ($content) {
             $content = preg_replace('/(\\s*)@extend\\((.+?)\\)/', '$1<?php $extend($2); ?>', $content);
             $content = preg_replace('/(\\s*)@base\\((.+?)\\)/', '$1<?php $app->base($2); ?>', $content);
             $content = preg_replace('/(\\s*)@route\\((.+?)\\)/', '$1<?php $app->route($2); ?>', $content);
             $content = preg_replace('/(\\s*)@scripts\\((.+?)\\)/', '$1<?php echo $app->assets($2); ?>', $content);
             $content = preg_replace('/(\\s*)@render\\((.+?)\\)/', '$1<?php echo $app->view($2); ?>', $content);
             $content = preg_replace('/(\\s*)@trigger\\((.+?)\\)/', '$1<?php $app->trigger($2); ?>', $content);
             $content = preg_replace('/(\\s*)@lang\\((.+?)\\)/', '$1<?php echo $app("i18n")->get($2); ?>', $content);
             $content = preg_replace('/(\\s*)@start\\((.+?)\\)/', '$1<?php $app->start($2); ?>', $content);
             $content = preg_replace('/(\\s*)@end\\((.+?)\\)/', '$1<?php $app->end($2); ?>', $content);
             $content = preg_replace('/(\\s*)@block\\((.+?)\\)/', '$1<?php $app->block($2); ?>', $content);
             return $content;
         });
         return $renderer;
     });
     $this("session")->init();
 }
All Usage Examples Of Lime\App::__construct