Controller应用
Controller是MVC中的C(即控制程序),是M和V的纽带。如果您对MVC的概念感觉陌生,请自行百度一下。关于Controller文件的创建,在前面介绍DoitPHP Tools的使用说明时已经讲述过,在此不再赘述。
下面将详细介绍DoitPHP的Controller Class(下文称作:Controller基类)所提供的类方法。为了便于记忆,下面将类方法进行归类,然后按照每个分类来介绍。
一、网址提交的参数获取
1、get($key = null, $default = null, $isEncode = true)
|获取$_GET的参数值。 获取$_GET的全局超级变量数组的某参数值,并进行转义化处理,提升代码安全。注:参数支持数组
|参数说明:
|$key : 所要获取$_GET的参数名,当本参数为空时,则获取全部$_GET参数(数组)
|$default : 默认参数, 注:$key不为数组时有效
|$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)
举例说明:
- 例一、
- $name = $this->get('name');
- 例二、
- $page = (int)$this->get('page', 1);
2、post($key = null, $default = null, $isEncode = true)
|获取$_POST参数值。 获取$_POST全局变量数组的某参数值,并进行转义等处理,提升代码安全。注:参数支持数组
|参数说明:
|$key : 所要获取$_POST的参数名称。当本参数为空时,则获取全部$_POST参数(数组)
|$default : 默认参数, 注:只有$key不为数组时有效
|$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)
举例说明:
- 例一、
- $name = $this->post('name');
3、getParams($key = null, $default = null, $isEncode = true)
|获取并分析$_GET或$_POST全局超级变量数组某参数的值。 获取并分析$_POST['参数']的值 ,当$_POST['参数']不存在或为空时,再获取$_GET['参数']的值。
|参数说明:
|$key : 所要获取的参数名称。当本参数为空时,则获取全部$_POST及$_GET的值
|$default : 默认参数, 注:只有$key不为数组时有效
|$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)
举例说明:
- 例一、
- $name = $this->getParams('name');
4、getCliParams($key = null, $default = null, $isEncode = true)
|获取PHP在CLI运行模式下的参数。当本参数为空时,则获取全部参数(数组)
|参数说明:
|$key : 参数键值, 注:不支持数组
|$default : 默认参数值
|$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)
举例说明:
- 例一、
- $modeName = $this->getCliParams('modeName');
二、Cookie操作
1、getCookie($cookieName = null, $default = null)
|获取某cookie变量的值
|参数说明:
|$cookieName : cookie变量名。当本参数为空时,则获取全部的Cookie(数组)
|$default : 默认值
2、setCookie($cookieName, $value, $expire = null, $path = null, $domain = null)
|设置某cookie变量的值
|参数说明:
|$cookieName : cookie的变量名
|$value : cookie值
|$expire : cookie的生存周期,默认为1小时。注:如果在主配置文件中设置了Cookie生存周期时,若本参数为空,则默认为主配置文件中设置的数值。如果本参数不为空,即使主配置文件中设置了生存周期,依然以本参数为准。
|$path : cookie所存放的目录。当本参数为空时,则默认值“/”,即根目录。
|$domain : cookie所支持的域名,默认为空
举例说明:
- 例一、
- $this->setCookie('pincode', 'Aspire');
3、deleteCookie($cookieName)
|删除某cookie变量的值
|参数说明:
|$cookieName : cookie变量名
三、Session操作
1、getSession($sessionName = null, $default = null)
|获取某session变量的值
|参数说明:
|$sessionName : session变量名,当本参数为空时,则获取全部的session值(数组)
|$default : 默认值
2、setSession($sessionName, $value)
|设置某session变量的值
|参数说明:
|$sessionName : session的变量名
|$value : 所要设置的session值
3、deleteSession($sessionName)
|删除某session变量的值
|参数说明:
|$sessionName : session变量名
四、常用URL处理
1、getBaseUrl()
|获取当前项目的根目录的URL。 本类方法常用于网页的CSS, JavaScript,图片等文件的调用
|参数说明:
|参数为空
举例说明:
- 例一、
- $this->assign('baseUrl', $this->getBaseUrl());
2、getSelfUrl($params = array())
|获取当前运行的Action的URL。 获取当前Action的URL. 注:该网址由当前的控制器(Controller)及动作(Action)组成。注:支持参数信息
|参数说明:
|$params : url路由其它字段。注:url的参数信息
举例说明:
- 例一、
- $this->assign('selfUrl', $this->getSelfUrl());
3、getActionUrl($actionName, $params = array())
|获取当前Controller内的某Action的url。 获取当前控制器(Controller)内的动作(Action)的url。 注:该网址仅由项目入口文件和控制器(Controller)组成,支持其它参数信息
|参数说明:
|$actionName : 所要获取url的action的名称
|$params : url路由其它字段。注:url的参数信息
4、getAssetUrl($dirName = null)
|获取当前项目asset目录的url。
|参数说明:
|$dirName : asset目录的子目录名
举例说明:
- 例一、
- $this->getAssetUrl();
- 例二、
- $this->getAssetUrl('images/thickbox');
- 或
- $this->getAssetUrl('images.thickbox');
5、createUrl($route, $params = array())
|网址(URL)组装操作。根据主配置文件中的相关设置将网址组装成统一模式(路由模式或标准模式)的网址。注:组装绝对路径的URL。
|参数说明:
|$route : controller与action。例:controllerName/actionName
|$params : URL路由其它字段。注:url的参数信息
举例说明:
- 例一、
- echo $this->createUrl('post/show');
- //URL:/index.php/post/show 或 /index.php?router=post/show
- 例二、
- $this->createUrl('post/view', array('id'=>35));
- //URL: 访问目录URL/index.php/post/view/id/35 或 或 /index.php?router=post/view&id=35
6、redirect($url)
|网址(URL)跳转操作。 页面跳转方法,例:运行页面跳转到自定义的网址(即:URL重定向)
|参数说明:
|$url : 所要跳转的网址(URL)
举例说明:
- 例一、
- $this->redirect('http://www.doitphp.com');
- 例二、
- $this->redirect($this->createUrl('login/signin'));
7、getServerName()
|获取当前运行程序的域名网址
|参数说明:
|参数为空
举例说明:
- 例一、
- echo $this->getServerName();
五、程序调试、信息提示
1、showMsg($message, $targetUrl = null, $holdTime = 3)
|显示提示信息操作。 本方法支持URL的自动跳转,当显示时间有效期失效时则跳转到自定义网址,若跳转网址为空则函数不执行跳转功能,当自定义网址参数为-1时默认为:返回上一页
|参数说明:
|$message : 所要显示的提示信息
|$targetUrl : 所要跳转的自定义网址
|$holdTime : 显示信息的有效期,注:(单位:秒) 默认为3秒
举例说明:
- 例一、
- $this->showMsg('测试成功', 'http://www.doitphp.com', 5);
- 例二、
- $this->showMsg('返回上一页', -1);
2、dump($data, $option = false)
|优雅输出print_r()函数所要输出的内容。 用于程序调试时,完美输出调试数据,功能相当于print_r().当第二参数为true时(默认为:false),功能相当于var_dump()。注:本方法一般用于程序调试
|参数说明:
|$data : 所要输出的数据
|$option : 选项:true(显示var_dump()的内容)/ false(显示print_r()的内容)
举例说明:
- 例一、
- $demo = range(0, 100, 10);
- $this->dump($demo);
- 例二、
- $demo = range(0, 100, 10);
- $this->dump($demo, true);
六、视图操作
1、assign($keys, $value = null)
|视图变量赋值操作
|参数说明:
|$keys : 视图变量名,支持数组
|$value : 视图变量值,当$keys为数组时,本参数设置无效
举例说明:
- 例一、
- $this->assign('sitename', 'doitphp');
- 例二、
- $this->assign(array(
- 'sitename'=>'doitphp',
- ));
2、display($fileName = null)
|显示当前页面的视图内容。 包括视图页面中所含有的挂件(widgets), 视图布局结构(layouts), 及render()所加载的视图片段等
|参数说明:
|$fileName : 视图名称。注:名称中不带.php后缀,通常格式:“controller/action”当本参数为空时,则默认为当前controller,当前action所对应的视图文件。
举例说明:
- 例一、
- $this->display();
- 例二、
- //视图文件为当前controller目录下的test.php或test.html(具体看主配置文件设置)
- $this->display('test');
- 例三、
- $this->display('test/demo');
- 或
- $this->display('test.demo');
3、setLayout($layoutName = null)
|设置视图文件布局结构视图的文件名(layout)
|参数说明:
|$layoutName : 所要设置的layout名称。默认值为:null,即:不使用layout视图
举例说明:
- 例一、
- $this->setLayout('main');
4、render($fileName = null, $data = array(), $return = false)
|加载并显示视图片段文件内容。 相当于include 代码片段,当$return为:true时返回代码代码片段内容,反之则显示代码片段内容
|参数说明:
|$fileName : 视图片段文件名称
|$data : 视图模板变量,注:数组型
|$return : 视图内容是否为返回,当为true时为返回,为false时则为显示。 默认为:false
举例说明:
- 例一、
- $this->render('list/show', array('data'=>$data));
- 例二、
- $emailContent = $this->render('template/email', array('data'=>$data), true);
5、widget($widgetName, $params = array())
|调用视图文件的挂件(widget)。 加载挂件内容,一般用在视图内容中
|参数说明:
|$widgetName : 所要加载的widget名称,注没有后缀名
|$params : 所要传递的参数
举例说明:
- 例一、
- $this->widget('mainMenu');
- 例二、
- $this->widget('loginIn', array('userName'=>'tommy'));
6、cache($cacheId = null, $expire = null)
|分析并加载视图缓存
|参数说明:
|$cacheId : 页面文件的缓存ID
|$expire : 页面缓存的生存周期
举例说明:
- 例一、
- $this->cache('citylist-beijing');
7、getView()
|返回视图的实例化对象
|参数说明:
|参数为空
举例说明:
- 例一、
- $viewPath = BASE_PATH . '/views/new2017';
- $this->getView()->setViewPath($viewPath);
七、文件导入、单例模式实例化常用操作
1、import($fileName)
举例说明:
- 例一:
- $this->import('snoopy.php');
- 例二:
- $this->import(BASE_PATH . '/extensions/editer/fck.php');
2、instance($className)
|类的单例实例化操作。 用于类的单例模式的实例化,当某类已经实例化,第二次实例化时则直接反回初次实例化的object,避免再次实例化造成的系统资源浪费
|参数说明:
|$className : 所要实例化的类名
举例说明:
- 例一、
- $excelObj = $this->instance('execel');
3、model($modelName)
|单例模式实例化一个Model对象。 单例模式实现化一个model对象。初次实例化某Model后, 当第二次实例化时则直接调用初次实现化的结果(object)
|参数说明:
|$modelName : 所要实例化的Modle名称
举例说明:
- 例一、
- $postModel = $this->model('post');
4、ext($extensionName)
|加载并单例模式实例化扩展插件。 注:这里所调用的扩展插件存放在extension目录里的子目录中。如:当加参数为demo,则子目录为名demo。 ext是extension简写
|参数说明:
|$extensionName : 扩展插件名称
举例说明:
- 例一、
- $editor = $this->ext('ckEditor');
5、getConfig($configName)
|静态加载项目设置目录(config目录)中的配置文件。 加载项目设置目录(config)中的配置文件,当第一次加载后,第二次加载时则不再重新加载文件。返回结果为配置文件内容,默认为数据格式为数组
|参数说明:
|$configName : 所要加载的配置文件名 注:不含后缀名
举例说明:
- 例一、
- $smtpParams = $this->getConfig('smtp');
八、获取IP、AJAX数据输出
1、getClientIp()
|获取客户端IP
|参数说明:
|参数为空
举例说明:
- 例一、
- $userIp = $this->getClientIp();
2、ajax($status = true, $msg = null, $data = array())
|Ajax调用返回的数据处理。 返回json数据,供前台ajax调用
|参数说明:
|$status : 执行状态 : true/false 或 1/0
|$msg : 返回信息
|$data : 返回数据,支持数组
举例说明:
- 例一、
- $this->ajax(false, '错误的参数调用!');
- 例二、
- $this->ajax(true, '操作成功', data('targetUrl'=>'refresh'));
九、自定义前函数
1、init()
所谓的“前函数”,就是程序在执行Controller类中的Action类方法前先执行的业务逻辑,即在实例化Controller类时,其构造函数所回调的类方法。这个被回调的类方法有个固定的名称:init。 DoitPHP框架中前函数没有任何业务逻辑(内容为空)。自定义前函数,就是在当前的Controller文件中重定义这个类方法。看下实例代码:
- /**
- * 这只是一个演示(前函数)
- *
- * @access protected
- * @return void
- */
- protected function init() {
- //判断用户是否登陆,若没有登陆,页面跳转到登陆面
- if(!$this->parseLogin()){
- $this->redirect($this->createUrl('login/signin'));
- }
- //设置布局视图
- $this->setLayout('userCenter');
- //视图赋值公共变量
- $this->assign(array(
- 'baseUrl' => $this->getBaseUrl(),
- 'assetUrl' => $this->getAssetUrl(),
- 'selfUrl' => $this->getSelfUrl(),
- ));
- }
原文: http://www.doitphp.com/index/documentation/?articleid=19