Home > Backend Development > PHP Tutorial > ThinkPHP的后缀操作方法配置 罢工了

ThinkPHP的后缀操作方法配置 罢工了

WBOY
Release: 2016-06-06 20:11:49
Original
1196 people have browsed it

我添加了一个方法 list

<code><?php namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {//类的名称  继承制 系统的核心累  Controller
    public function _before_index(){//定义前置操作
        echo "index.before<br />";
    }
    public function index(){//index()方法  public
//        echo '<br>Hello Think PHP';
//        $config=C('');//读取全部配置项
//        dump($config);//dump()是ThinkPHP的函数用来打印变量的
        echo "index<br>";
    }
    public function _after_index(){//定义后置操作
        echo "index.after<br>";
    }
    public function list(){//注意系统关键字会报错
        echo "list";
    }
}</code>
Copy after login
Copy after login

OK报错了
然后去配置后缀

<code><?php return array(
    //'配置项'=>'配置值'
    /* 数据库设置 */
    'DB_TYPE'               =>  'mysql',     // 数据库类型
    'DB_HOST'               =>  'localhost', // 服务器地址
    'DB_NAME'               =>  'jike',          // 数据库名
    'DB_USER'               =>  'user',      // 用户名
    'DB_PWD'                =>  '123',          // 密码
    'DB_PORT'               =>  '3306',        // 端口
    'DB_PREFIX'             =>  'jikexueyuan',    // 数据库表前缀
    'LOAD_EXT_CONFIG'       =>  'user,upload',

    /* 应用设定 */
    'ACTION_SUFFIX'         =>  'Action', // 操作方法后缀
);</code>
Copy after login
Copy after login

给系统关键字的方法添加后缀

<code><?php namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function _before_index(){
        echo "index.before<br />";
    }
    public function index(){
//        $config=C('');
//        dump($config);
        echo "index<br>";
    }
    public function _after_index(){
        echo "index.after<br>";
    }
    public function listAction(){
        echo "list";
    }
}</code>
Copy after login
Copy after login

OK我再去打开浏览器
大家思考一下会出现什么情况
对应该是会继续报错
非法操作index
ThinkPHP的后缀操作方法配置  罢工了

但是实际上没有报错非法操作index
而且很正常的运行着
你看前置后置也是正常的???
ThinkPHP的后缀操作方法配置  罢工了
为什么?
怎么和课程有出入
不知道是不是我疏忽了什么
单是我真心仔细检查了都没发现是什么原因
刚入门求解惑

回复内容:

我添加了一个方法 list

<code><?php namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {//类的名称  继承制 系统的核心累  Controller
    public function _before_index(){//定义前置操作
        echo "index.before<br />";
    }
    public function index(){//index()方法  public
//        echo '<br>Hello Think PHP';
//        $config=C('');//读取全部配置项
//        dump($config);//dump()是ThinkPHP的函数用来打印变量的
        echo "index<br>";
    }
    public function _after_index(){//定义后置操作
        echo "index.after<br>";
    }
    public function list(){//注意系统关键字会报错
        echo "list";
    }
}</code>
Copy after login
Copy after login

OK报错了
然后去配置后缀

<code><?php return array(
    //'配置项'=>'配置值'
    /* 数据库设置 */
    'DB_TYPE'               =>  'mysql',     // 数据库类型
    'DB_HOST'               =>  'localhost', // 服务器地址
    'DB_NAME'               =>  'jike',          // 数据库名
    'DB_USER'               =>  'user',      // 用户名
    'DB_PWD'                =>  '123',          // 密码
    'DB_PORT'               =>  '3306',        // 端口
    'DB_PREFIX'             =>  'jikexueyuan',    // 数据库表前缀
    'LOAD_EXT_CONFIG'       =>  'user,upload',

    /* 应用设定 */
    'ACTION_SUFFIX'         =>  'Action', // 操作方法后缀
);</code>
Copy after login
Copy after login

给系统关键字的方法添加后缀

<code><?php namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function _before_index(){
        echo "index.before<br />";
    }
    public function index(){
//        $config=C('');
//        dump($config);
        echo "index<br>";
    }
    public function _after_index(){
        echo "index.after<br>";
    }
    public function listAction(){
        echo "list";
    }
}</code>
Copy after login
Copy after login

OK我再去打开浏览器
大家思考一下会出现什么情况
对应该是会继续报错
非法操作index
ThinkPHP的后缀操作方法配置  罢工了

但是实际上没有报错非法操作index
而且很正常的运行着
你看前置后置也是正常的???
ThinkPHP的后缀操作方法配置  罢工了
为什么?
怎么和课程有出入
不知道是不是我疏忽了什么
单是我真心仔细检查了都没发现是什么原因
刚入门求解惑

我想你是不是理解错了:

<code>例如,如果设置:
'ACTION_SUFFIX'=>'Act'
那么访问某个模块的add操作对应读取模块类的操作方法则由原来的add方法变成addAct方法。</code>
Copy after login

意味着你在index后面添加Action和不添加,他都会去找实际控制器里面的index方法,因为入口文件会根据你的方法名称匹配是否存在Action字符串,找不到就会去找这个字符串的名称对应的方法!
这样是避免了特殊命名公用报错的问题

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template