yuchao 发表于 2018-2-11 12:07:00


            命令行模式下,根据传参,调用不同控制器。控制器中根据配置定时执行指定方法
Application.php
$v) {
      if($k==0) continue;
      $_SERVER['PATH_INFO'].="/".$v;
      }
    }
}
//pathinfo处理
public static function pathInfo(){
    if(isset($_SERVER['PATH_INFO'])){
      $pathinfo=array_filter(explode("/", $_SERVER['PATH_INFO']));
      for($i=1;$i3){
            if($i%2==0){
                $_GET[$key]=$value;
            }
            }
            break;
      }
      }
    }
    $_GET['m']=!empty($_GET['m']) ? ucfirst($_GET['m']) : 'Index';
    $_GET['c']=!empty($_GET['c']) ? ucfirst($_GET['c']) : 'Index';
    $_GET['a']=!empty($_GET['a']) ? $_GET['a'] : 'index';
    $class="\\Controller\\{$_GET['m']}\\{$_GET['c']}";
    $controller=new $class;
    $controller->$_GET['a']();
}
//致命错误回调
public static function shutdownCallback(){
    $e=error_get_last();
    if(!$e) return;
    self::errorHandler($e['type'],'
Fatal Error
'.$e['message'],$e['file'],$e['line']);
}
//错误处理
protected static function myErrorHandler($errno,$errstr,$errfile,$errline){
    list($micseconds,$seconds)=explode(" ",microtime());
    $micseconds=round($micseconds*1000);
    $micseconds=strlen($micseconds)==1 ? '0'.$micseconds : $micseconds;
    if(php_sapi_name()=="cli"){
      $break="\r\n";
    }else{
      $break="
";
    }
    $mes="[".date("Y-m-d H:i:s",$seconds).":{$micseconds}] ".$errfile." ".$errline." line ".$errstr.$break;
    echo $mes;   
}
//注册
public static function register(){
    error_reporting(0);
    set_error_handler(function($errno,$errstr,$errfile,$errline){
      self::myErrorHandler($errno,$errstr,$errfile,$errline);
    });
    register_shutdown_function(function(){
      self::shutdownCallback();
    });
    spl_autoload_register("self::loadClass");
}
}
Application::main();
页: [1]
查看完整版本: PHP命令行执行整合pathinfo模拟定时任务实例