예제 #1
0
파일: Init.php 프로젝트: zxwqxtu/flyphp-src
 /**
  * 启动程序,查找相应的文件controller,action
  *
  * @return boolean
  */
 public function start()
 {
     $controller = $this->_route->getController();
     $action = $this->_route->getAction();
     $params = $this->_route->getParams();
     $controller = empty($controller) ? Config::get('indexController') : $controller;
     $className = "App\\Controller\\" . ucfirst($controller);
     if (!class_exists($className)) {
         return Render::getInstance()->setHeaders(['HTTP/1.1 404 Not Found'])->output("404 Not Found [CONTROLLER-NO-EXISTS:{$controller}]");
     }
     $ctrl = new $className();
     $action = empty($action) ? $ctrl->getDefaultAction() : $action;
     $method = $action . "Action";
     if (empty($action) || !method_exists($className, $method)) {
         return Render::getInstance()->setHeaders(['HTTP/1.1 404 Not Found'])->output("404 Not Found [ACTION-NO-EXISTS:{$controller}->{$action}]");
     }
     $data = call_user_func_array(array($ctrl, $method), $params);
     if (php_sapi_name() == 'cli') {
         return Render::getInstance()->output($data, false);
     } elseif (empty($ctrl->getView())) {
         return Render::getInstance()->setHeaders($ctrl->getHeaders())->output($data, true);
     } elseif (isset($_SERVER['Content-Type']) && $_SERVER['Content-Type'] == 'application/json') {
         return Render::getInstance()->setHeaders($ctrl->getHeaders())->output($data, true);
     }
     return Render::getInstance()->setHeaders($ctrl->getHeaders())->view($data, $ctrl->getViewFile(), $ctrl->getLayoutFile());
 }
예제 #2
0
파일: Route.php 프로젝트: zxwqxtu/flyPHP
 /**
  * 初始化运行
  */
 protected function init()
 {
     //命令行运行
     if (php_sapi_name() == 'cli') {
         if (empty($_SERVER['argv'][1])) {
             throw new \Exception('UNDEFINED-APPNAME');
         }
         $this->_appName = $_SERVER['argv'][1];
         $tmp = $_SERVER['argv'];
         unset($tmp[1]);
         $this->_route = array_values($tmp);
         //绝对路径换成index.php
         $this->_route[0] = 'index.php';
     } else {
         $this->_appName = Config::get('app', $_SERVER['HTTP_HOST']);
         $this->_route = explode('/', $_SERVER['PHP_SELF']);
     }
 }
예제 #3
0
파일: Render.php 프로젝트: zxwqxtu/flyPHP
 /**
  * 获取config文件值
  *
  * @param string $key  key
  * @param string $item item 
  *
  * @return string|int|array|null
  */
 public function getConfig($key = null, $item = null)
 {
     return Config::get($key, $item);
 }
예제 #4
0
 /**
  * @dataProvider provider
  */
 public function testGet($key, $item = null)
 {
     $this->assertNull(Config::get($key, $item));
 }
예제 #5
0
파일: Init.php 프로젝트: zxwqxtu/flyPHP
 /**
  * 启动程序,查找相应的文件controller,action
  *
  * @return boolean
  */
 public function start()
 {
     $controller = $this->_route->getController();
     $action = $this->_route->getAction();
     $params = $this->_route->getParams();
     $controller = empty($controller) ? Config::get('indexController') : $controller;
     $className = "App\\Controllers\\" . ucfirst($controller);
     if (!class_exists($className)) {
         throw new \Exception("CONTROLLER-NO-EXISTS:{$controller}");
         return false;
     }
     $ctrl = new $className();
     $action = empty($action) ? $ctrl->getDefaultAction() : $action;
     if (!empty($action) && !method_exists($className, $action)) {
         throw new \Exception("ACTION-NO-EXISTS:{$controller}->{$action}");
         return false;
     }
     $data = call_user_func_array(array($ctrl, $action), $params);
     if (php_sapi_name() == 'cli') {
         Render::getInstance()->output($data, false);
     } elseif (empty($ctrl->getView())) {
         Render::getInstance()->setHeaders($ctrl->getHeaders())->output($data, true);
     } elseif (isset($_SERVER['Content-Type']) && $_SERVER['Content-Type'] == 'application/json') {
         Render::getInstance()->setHeaders($ctrl->getHeaders())->output($data, true);
     }
     Render::getInstance()->setHeaders($ctrl->getHeaders())->view($data, $ctrl->getViewFile(), $ctrl->getLayoutFile());
     return true;
 }