控制器
<h1>控制器写法</h1>
<p>控制器路径: /app/index/ctrl/index.php</p>
<pre><code>&lt;?php
namespace app\ctrl; // 此处必须是 app\ctrl 命名空间
class index {
static function init () //前置方法
{
echo '&lt;p&gt;我是前置方法&lt;/p&gt;';
}
static function index () //inedx方法
{
echo '&lt;p&gt;I am index action&lt;/p&gt;';
}
static function hello () //hello方法
{
echo '&lt;p&gt;I am hello action&lt;/p&gt;';
}
static function after () //后置方法
{
echo '&lt;p&gt;我是后置方法&lt;/p&gt;';
}
}</code></pre>
<h1>控制器的访问</h1>
<p><strong>以下示例展示的是访问 admin 应用的 user 模块 下的 index 控制器 内的 add 方法,传递code参数值是123456</strong></p>
<ul>
<li>
<h3>默认querystring的url模式</h3>
<p>示例:<a href="http://www.***.com/admin.php?m=user&c=index&a=add&code=123456">http://www.***.com/admin.php?m=user&c=index&a=add&code=123456</a>
m参数指定模块名,如果不启用模块功能,无需此参数
c参数指定控制器
a参数是操作名
code是自定义需要传递的参数</p>
</li>
<li>
<h3>pathinfo的url模式</h3>
<p>示例:<a href="http://www.***.com/admin.php/user/index/add/code/123456">http://www.***.com/admin.php/user/index/add/code/123456</a>
用 / 分割pathinfo部分得到的参数就是 [user, index, add, code, 123456]
前三个参数位置是固定的,分别是:模块,控制器,操作
如果不启用模块功能,则前两个参数位置是固定的,分别是:控制器,操作
剩余的参数按顺序两两一组构成 key=>value 的格式
如此使用常量 ROUTE['params']['code']便可以取到code参数值为123456</p>
</li>
<li>
<h3>路由模式的url详见路由说明</h3>
</li>
</ul>
<p><font color=red></p>
<ul>
<li><strong>debug模式下,访问不存在的控制器或方法,或是程序内部错误,将直接抛出错误信息。</strong></li>
<li><strong>非debug模式下访问不存在的方法会执行控制器的 _404() 方法。</strong></li>
<li><strong>非debug模式下出现程序内部错误会执行控制器的 _500() 方法。</strong></li>
<li><strong>非debug模式下如果当前控制器不存在 _404() 或 _500() 方法:则会执行默认的 _404() 或 _500() 方法显示错误页面。</strong></li>
<li><strong>可以根据需要将_404(), _500() 方法写在控制器基类当中</strong></li>
</ul>
<p></font></p>
<h1>控制器继承</h1>
<ul>
<li><strong>框架没用控制器基类,<font color=red>无须</font> 继承基类</strong></li>
<li><strong>大家可以按自己的需求写一个基类,控制器继承此类</strong></li>
</ul>