SHELL 脚本基础控制器
API - Core_Controller_Index
继承自父类的方法和变量
- Controller::$arguments - 页面请求的参数
- Controller::$controller - 当前访问的控制器
- Controller::$action - 当前调用的方法
- Controller::$uri - 当前请求的URI
- Controller::$directory - 当前请求的目录部分
- Controller::$ids - 当前控制器信息ID
- Controller::$controllers - 控制器实例化化对象
- Controller_Shell::getopt - 获取shell命令下参数
- Controller_Shell::input - 获取用户输入内容
- Controller_Shell::output - 输出内容,会附加换行符
- Controller::__construct
- Controller::session - 返回Session对象
- Controller::show_message - 显示信息
- Controller::show_success - 输出成功信息
- Controller::show_error
- Controller::execute - 执行新控制
- Controller::redirect - 页面跳转
- Controller::header_cache - 页面输出header缓存
获取shell命令下参数
与getopt()具体相似的功能,区别:在命令行中如果执行 php index.php default test -a=1 -b=c
这样的命令时,通过getopt()会获取参数失败,而这个方法可以正确获得相应的参数
示例:
在默认项目Shell控制器中加入一个test控制器文件 ( projects/default/controller_shell/test.controller.php
) 内容为:
<?php
class Controller_Test extends Controller_Shell
{
public function action_run()
{
$shortopts = "";
$shortopts .= "f:"; // 必须有值, 比如:-f myvalue,将会得到f=myvalue
$shortopts .= "v::"; // 可接受值, 比如:-v 则v=false,如果是-v=myvalue,则v=myvalue
$shortopts .= "abc"; // 不接受值, 比如:-a -v 则获取a=false,v=false,注意,这个并不是接受-abc的参数,而是分别可接受-a,-b,-c
$longopts = array
(
"required:", // 必须有值, 比如:--required=abc
"optional::", // 可接受值, 比如:--optional 则获取 optional=false,--optional=abc,则是optional=abc
"option", // 不接受值, 比如:--option 则获取 option=false
"opt", // 同上
);
$options = self::getopt($shortopts, $longopts);
var_dump($options);
}
}
通过 php index.php default test run -f "value for f" -v -a --required value --optional="optional value" --option
运行以上脚本会输出
array(6) {
["f"]=> string(11) "value for f"
["v"]=> bool(false)
["a"]=> bool(false)
["required"]=> string(5) "value"
["optional"]=> string(14) "optional value"
["option"]=> bool(false)
}
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$options |
string |
但字符参数,只接受[a-zA-Z0-9]的参数,比如 -a, -h, -v=myvalue, -4 这样 | |
$global_options |
array |
--参数,比如--test, --help, --v=abc 这样 | null |
array
返回获取到的参数的数组获取用户输入内容
输出内容,会附加换行符
用于给系统调用设置对象变量
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$data |
array |
$data |
用于给系统调用获取控制器变量
返回Session对象
Session
显示信息
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$msg |
string |
$message | |
$code |
int |
$code | integer 0 |
$data |
unknown |
array(0) |
输出成功信息
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$message |
string |
$message | string(7) "success" |
$data |
unknown |
array(0) |
执行新控制
若采用非内部调用,则会等同于浏览器的URI执行,请注意防止陷入死循环
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$uri |
string |
新的uri | |
$print |
boolean |
是否直接输出 | bool true |
$use_route |
boolean |
是否在路由中寻找,默认:是 | bool true |
$is_internal |
boolean |
是否内部调用,默认:是 | bool true |
string
返回新控制器执行的html页面跳转
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$url |
string |
Redirect location | |
$code |
integer |
Status code: 301, 302, etc | integer 302 |
void
页面输出header缓存
0表示不缓存
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
$time |
int |
缓存时间,单位秒 | integer 86400 |