PHP实现的简单路由和类自动加载功能
本文实例讲述了PHP实现的简单路由和类自动加载功能。分享给大家供大家参考,具体如下:
项目目录如下
入口文件index.php
类自动加载文件environment.php
我这里类的加载规则是比如core__app::run()对应根目录/core/app.php的run()方法,用到了spl_autoload_register()函数实现自动加载,当调用某个类名的时候,会自动执行spl_autoload_register('loader::load'),根据类名include对应的类文件。
app.php入口文件执行的方法开始跑框架流程
1){ $controller=$params[0]; $method=$params[1]; }elseif($count==1){ $controller='index'; $method=$params[0]; }else{ } $filename=WEBROOT.'/controller/'.$controller.'.php'; $controller='controller__'.$controller; try{ if(!file_exists($filename)){ thrownewException('controller'.$controller.'isnotexists!'); return; } include($filename); if(!class_exists($controller)){ thrownewException('class'.$controller.'isnotexists'); return; } $obj=newReflectionClass($controller); if(!$obj->hasMethod($method)){ thrownewException('method'.$method.'isnotexists'); return; } }catch(Exception$e){ echo$e;//展示错误结果 return; } $newObj=new$controller(); call_user_func_array(array($newObj,$method),$params); } }根据请求uri去找对应的controller,用call_user_func_array()的方式调用controller里的方法
根目录/controller/test.php
这里其实调用不一定要调用model里的test方法,可以调model目录下的任意文件,在此之前可以去都读一些config文件等等操作。
根目录/model/test.php
例如hostname/test/write这个请求就会从入口文件进来,经过core__app::run就会找到controller下对应的的controller__test类,执行write()方法
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。