Controller应用

    下面将详细介绍DoitPHP的Controller Class(下文称作:Controller基类)所提供的类方法。为了便于记忆,下面将类方法进行归类,然后按照每个分类来介绍。

    |获取$_GET的参数值。 获取$_GET的全局超级变量数组的某参数值,并进行转义化处理,提升代码安全。注:参数支持数组
    |参数说明:
    |$key : 所要获取$_GET的参数名,当本参数为空时,则获取全部$_GET参数(数组)
    |$default : 默认参数, 注:$key不为数组时有效
    |$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)

    举例说明:

    2、post($key = null, $default = null, $isEncode = true)

    |获取$_POST参数值。 获取$_POST全局变量数组的某参数值,并进行转义等处理,提升代码安全。注:参数支持数组
    |参数说明:
    |$key : 所要获取$_POST的参数名称。当本参数为空时,则获取全部$_POST参数(数组)
    |$default : 默认参数, 注:只有$key不为数组时有效
    |$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)

    举例说明:

    1. 例一、

    3、getParams($key = null, $default = null, $isEncode = true)

    |获取并分析$_GET或$_POST全局超级变量数组某参数的值。 获取并分析$_POST['参数']的值 ,当$_POST['参数']不存在或为空时,再获取$_GET['参数']的值。
    |参数说明:
    |$key : 所要获取的参数名称。当本参数为空时,则获取全部$_POST及$_GET的值
    |$default : 默认参数, 注:只有$key不为数组时有效
    |$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)

    举例说明:

    1. 例一、
    2. $name = $this->getParams('name');

    4、getCliParams($key = null, $default = null, $isEncode = true)

    |获取PHP在CLI运行模式下的参数。当本参数为空时,则获取全部参数(数组)
    |参数说明:
    |$key : 参数键值, 注:不支持数组
    |$default : 默认参数值
    |$isEncode : 是否对符串进行htmlspecialchars()转码(true:是/ false:否)

    举例说明:

    1. 例一、
    2. $modeName = $this->getCliParams('modeName');

    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所支持的域名,默认为空

    举例说明:

    1. 例一、
    2. $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变量名

    1、getBaseUrl()

    |获取当前项目的根目录的URL。 本类方法常用于网页的CSS, JavaScript,图片等文件的调用
    |参数说明:
    |参数为空

    举例说明:

    1. 例一、
    2. $this->assign('baseUrl', $this->getBaseUrl());

    |获取当前运行的Action的URL。 获取当前Action的URL. 注:该网址由当前的控制器(Controller)及动作(Action)组成。注:支持参数信息
    |参数说明:
    |$params : url路由其它字段。注:url的参数信息

    举例说明:

    1. 例一、
    2. $this->assign('selfUrl', $this->getSelfUrl());

    3、getActionUrl($actionName, $params = array())

    4、getAssetUrl($dirName = null)

    |获取当前项目asset目录的url。
    |参数说明:
    |$dirName : asset目录的子目录名

    举例说明:

    1. 例一、
    2. $this->getAssetUrl();
    3.  
    4. 例二、
    5. $this->getAssetUrl('images/thickbox');
    6. $this->getAssetUrl('images.thickbox');

    5、createUrl($route, $params = array())

    |网址(URL)组装操作。根据主配置文件中的相关设置将网址组装成统一模式(路由模式或标准模式)的网址。注:组装绝对路径的URL。
    |参数说明:
    |$route : controller与action。例:controllerName/actionName
    |$params : URL路由其它字段。注:url的参数信息

    举例说明:

    1. 例一、
    2. echo $this->createUrl('post/show');
    3. //URL:/index.php/post/show 或 /index.php?router=post/show
    4.  
    5. 例二、
    6. $this->createUrl('post/view', array('id'=>35));
    7. //URL: 访问目录URL/index.php/post/view/id/35 或 或 /index.php?router=post/view&id=35

    6、redirect($url)

    |网址(URL)跳转操作。 页面跳转方法,例:运行页面跳转到自定义的网址(即:URL重定向)
    |参数说明:
    |$url : 所要跳转的网址(URL)

    举例说明:

    7、getServerName()

    |获取当前运行程序的域名网址
    |参数说明:
    |参数为空

    举例说明:

    1. 例一、
    2. echo $this->getServerName();

    五、程序调试、信息提示

    1、showMsg($message, $targetUrl = null, $holdTime = 3)

    |显示提示信息操作。 本方法支持URL的自动跳转,当显示时间有效期失效时则跳转到自定义网址,若跳转网址为空则函数不执行跳转功能,当自定义网址参数为-1时默认为:返回上一页
    |参数说明:
    |$message : 所要显示的提示信息
    |$targetUrl : 所要跳转的自定义网址
    |$holdTime : 显示信息的有效期,注:(单位:秒) 默认为3秒

    举例说明:

    1. 例一、
    2. $this->showMsg('测试成功', 'http://www.doitphp.com', 5);
    3.  
    4. 例二、
    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()的内容)

    举例说明:

    1. 例一、
    2. $demo = range(0, 100, 10);
    3. $this->dump($demo);
    4.  
    5. 例二、
    6. $demo = range(0, 100, 10);
    7. $this->dump($demo, true);

    六、视图操作

    1、assign($keys, $value = null)

    |视图变量赋值操作
    |参数说明:
    |$keys : 视图变量名,支持数组
    |$value : 视图变量值,当$keys为数组时,本参数设置无效

    举例说明:

    1. 例一、
    2. $this->assign('sitename', 'doitphp');
    3.  
    4. 例二、
    5. $this->assign(array(
    6. 'sitename'=>'doitphp',

    2、display($fileName = null)

    |显示当前页面的视图内容。 包括视图页面中所含有的挂件(widgets), 视图布局结构(layouts), 及render()所加载的视图片段等
    |参数说明:
    |$fileName : 视图名称。注:名称中不带.php后缀,通常格式:“controller/action”当本参数为空时,则默认为当前controller,当前action所对应的视图文件。

    举例说明:

    1. 例一、
    2. $this->display();
    3.  
    4. 例二、
    5. //视图文件为当前controller目录下的test.php或test.html(具体看主配置文件设置)
    6. $this->display('test');
    7.  
    8. 例三、
    9. $this->display('test/demo');
    10. $this->display('test.demo');

    3、setLayout($layoutName = null)

    |设置视图文件布局结构视图的文件名(layout)
    |参数说明:
    |$layoutName : 所要设置的layout名称。默认值为:null,即:不使用layout视图

    举例说明:

    1. 例一、
    2. $this->setLayout('main');

    |加载并显示视图片段文件内容。 相当于include 代码片段,当$return为:true时返回代码代码片段内容,反之则显示代码片段内容
    |参数说明:
    |$fileName : 视图片段文件名称
    |$data : 视图模板变量,注:数组型
    |$return : 视图内容是否为返回,当为true时为返回,为false时则为显示。 默认为:false

    举例说明:

    1. 例一、
    2. $this->render('list/show', array('data'=>$data));
    3.  
    4. 例二、
    5. $emailContent = $this->render('template/email', array('data'=>$data), true);

    5、widget($widgetName, $params = array())

    举例说明:

    1. 例一、
    2. $this->widget('mainMenu');
    3.  
    4. 例二、
    5. $this->widget('loginIn', array('userName'=>'tommy'));

    6、cache($cacheId = null, $expire = null)

    |分析并加载视图缓存
    |参数说明:
    |$cacheId : 页面文件的缓存ID
    |$expire : 页面缓存的生存周期

    举例说明:

    7、getView()

    |返回视图的实例化对象
    |参数说明:
    |参数为空

    举例说明:

    1. 例一、
    2. $viewPath = BASE_PATH . '/views/new2017';
    3. $this->getView()->setViewPath($viewPath);

    1、import($fileName)

    举例说明:

    1. 例一:
    2. $this->import('snoopy.php');
    3.  
    4. 例二:
    5. $this->import(BASE_PATH . '/extensions/editer/fck.php');

    2、instance($className)

    |类的单例实例化操作。 用于类的单例模式的实例化,当某类已经实例化,第二次实例化时则直接反回初次实例化的object,避免再次实例化造成的系统资源浪费
    |参数说明:
    |$className : 所要实例化的类名

    举例说明:

    1. 例一、
    2. $excelObj = $this->instance('execel');

    3、model($modelName)

    |单例模式实例化一个Model对象。 单例模式实现化一个model对象。初次实例化某Model后, 当第二次实例化时则直接调用初次实现化的结果(object)
    |参数说明:
    |$modelName : 所要实例化的Modle名称

    举例说明:

    1. 例一、
    2. $postModel = $this->model('post');

    4、ext($extensionName)

    |加载并单例模式实例化扩展插件。 注:这里所调用的扩展插件存放在extension目录里的子目录中。如:当加参数为demo,则子目录为名demo。 ext是extension简写
    |参数说明:
    |$extensionName : 扩展插件名称

    举例说明:

    1. 例一、
    2. $editor = $this->ext('ckEditor');

    5、getConfig($configName)

    |静态加载项目设置目录(config目录)中的配置文件。 加载项目设置目录(config)中的配置文件,当第一次加载后,第二次加载时则不再重新加载文件。返回结果为配置文件内容,默认为数据格式为数组
    |参数说明:
    |$configName : 所要加载的配置文件名 注:不含后缀名

    举例说明:

    1. 例一、
    2. $smtpParams = $this->getConfig('smtp');

    八、获取IP、AJAX数据输出

    1、getClientIp()

    |获取客户端IP
    |参数说明:
    |参数为空

    举例说明:

    1. 例一、
    2. $userIp = $this->getClientIp();

    2、ajax($status = true, $msg = null, $data = array())

    |Ajax调用返回的数据处理。 返回json数据,供前台ajax调用
    |参数说明:
    |$status : 执行状态 : true/false 或 1/0
    |$msg : 返回信息
    |$data : 返回数据,支持数组

    举例说明:

    1. 例一、
    2. $this->ajax(false, '错误的参数调用!');
    3.  
    4. $this->ajax(true, '操作成功', data('targetUrl'=>'refresh'));

    九、自定义前函数

    所谓的“前函数”,就是程序在执行Controller类中的Action类方法前先执行的业务逻辑,即在实例化Controller类时,其构造函数所回调的类方法。这个被回调的类方法有个固定的名称:init。 DoitPHP框架中前函数没有任何业务逻辑(内容为空)。自定义前函数,就是在当前的Controller文件中重定义这个类方法。看下实例代码: