当前位置: 首页 > news >正文

简单响应式网站设计代码设计说明万能模板200字

简单响应式网站设计代码,设计说明万能模板200字,机加工如何用网站开发客户,苏州模板网站建站路由是一个框架中必不可少的组件#xff0c;其作用是把 URL 按照预定规则解析到特定控制器中。我们在这里定义了两种路由规则#xff1a;查询字符串。在路径后面使用问号加参数#xff0c;多个参数用 分隔。在配置文件使用 querystring 表示#控制器/方法?参数1值1其作用是把 URL 按照预定规则解析到特定控制器中。我们在这里定义了两种路由规则查询字符串。在路径后面使用问号加参数多个参数用 分隔。在配置文件使用 querystring 表示#控制器/方法?参数1值1参数2值2http://domain/user/info?namephpchapter10路径以路径的形式将参数和值添加到后面中间用 / 分隔。配置中使用 restful#控制器/方法/参数1/值1/参数2/值2https://domain/user/info/name/php/chapter/100主控制器在目录 core 创建 Controller.php该类继承 Containernamespace core;class Controller extends Container{}主控制器可以添加控制器公共方法如页面渲染 render()错误代码等所有控制器必须继承主控制器。由于主控制器继承 Container因此控制器也是分发器的子类可以通过 register() 获取实例。控制器类类命名规则控制器命名遵循大写开头的驼峰命名规则并且默认添加后缀 Controller控制器文件命名和类命名一样如控制器类 UserController其文件命名为 UserController.php。方法命名规则方法命名遵循小写开头的驼峰命名规则并且默认添加请求方式(如getpostput等)前缀如 getIndex()postUpdate()。以上例 UserController 为例namespace controller;use core\Controller;class UserController extends Controller{/*** HTTP 请求方式为 GET 时有效* url 为 /user/info**/public function getInfo(){}/*** HTTP 请求方式为 POST 时有效* url 为 /user/update**/public function postUpdate(){}}路由解析在 core 目录下创建 Router.php$ cd tinyphp/core$ touch Router.php在构造函数中定义变量namespace core;use dispatcher\Container;class Router extends Container{public $method;public $uri;public $path;public function __construct(){$this-method $_SERVER[REQUEST_METHOD] ?? GET;$this-uri $_SERVER[REQUEST_URI];$this-path $_SERVER[PATH_INFO];}}常见 $_SERVER 字段$_SERVER[PATH_INFO] URL的路径信息如 /user/info$_SERVER[REQUEST_METHOD] 请求方法如 POSTGET$_SERVER[REQUEST_URI] 完整 URL如 /user/info?id1nameLucy在 start() 方法中解析 URLprotected function start(){/*** 也可以写成 Config::get(default.route,querystring);**/$route Config::get(default.route) ?? querystring;//解析 controller 和 action$path explode(/,trim($this-path,/));if (empty($path[0])) {$path[0] Config::get(default.controller,index);}$controller ucfirst($path[0]).Controller;//获取请求方法$method strtolower($this-method);$action $method.ucfirst($path[1] ?? Config::get(default.action,index));//获取参数$args [];if (method_exists($this,$route)) {$args call_user_func_array([$this,$route],[$this-uri]);}return [controller$controller,action$action,args$args];}querystring() 参数解析private function querystring($url){$urls explode(?, $url);if (empty($urls[1])) {return [];}$param_arr [];$param_tmp explode(, $urls[1]);if (empty($param_tmp)) {return [];}foreach ($param_tmp as $param) {if (strpos($param, )) {list($key,$value) explode(, $param);//变量名是否复合规则if (preg_match(/^[A-Za-z_][A-Za-z0-9_]*$/, $key)) {$param_arr[$key] $value;}}}return $param_arr;}querystring 的参数为 ? 后面的部分多个参数用 分隔。restful() 参数解析private function restful($url){$path explode(/, trim(explode(?, $url)[0], /));$params [];$i 2;while (1) {if (!isset($path[$i])) {break;}$params[$path[$i]] $path[$i1] ?? ;$i $i2;}return $params;}restful 的参数为方法后面的路径。完整代码如下namespace core;use dispatcher\Container;class Router extends Container{public $method;public $uri;public $path;public function __construct(){$this-method $_SERVER[REQUEST_METHOD] ?? GET;$this-uri $_SERVER[REQUEST_URI];$this-path $_SERVER[PATH_INFO];}protected function start(){$route Config::get(default.route) ?? querystring;//解析 controller 和 action$path explode(/,trim($this-path,/));if (empty($path[0])) {$path[0] Config::get(default.controller,index);}$controller ucfirst($path[0]).Controller;//获取请求方法$method strtolower($this-method);$action $method.ucfirst($path[1] ?? Config::get(default.action,index));//获取参数$args [];if (method_exists($this,$route)) {$args call_user_func_array([$this,$route],[$this-uri]);}return [controller$controller,action$action,args$args];}/*** 查询字符串参数* 后参数通过分隔**/private function querystring($url){$urls explode(?, $url);if (empty($urls[1])) {return [];}$param_arr [];$param_tmp explode(, $urls[1]);if (empty($param_tmp)) {return [];}foreach ($param_tmp as $param) {if (strpos($param, )) {list($key,$value) explode(, $param);//变量名是否复合规则if (preg_match(/^[A-Za-z_][A-Za-z0-9_]*$/, $key)) {$param_arr[$key] $value;}}}return $param_arr;}/*** 路径参数* 控制器/方法/参数1/值1/参数2/值2**/http://domain/user/info/name/entner?namephpchapter10private function restful($url){$path explode(/, trim(explode(?, $url)[0], /));$params [];$i 2;while (1) {if (!isset($path[$i])) {break;}$params[$path[$i]] $path[$i1] ?? ;$i $i2;}return $params;}}路由调用方式为$router Rouer::start();测试路由在配置文件 app/conf/config.php 中设置默认路由为 querystringreturn [default [controller index,action index,route querystring,//还可以设置为 restful],view [dir layout,file base,]];在 core/Application.php 文件中 run() 方法实现路由调用...public function run(){$router Router::start();echo ;print_r($router);}...启动 PHP 内置服务器$ cd tinyphp/public$ php -S localhost:8080在浏览器中输入 http://localhost:8080/course/document?namephpchapter10输出结果为Array([controller] CourseController[action] getDocument[args] Array([name] php[chapter] 10))同理可以测试 restful 路由规则。调用控制器方法路由解析后获得需要调用的控制器名方法和参数。由于控制器继承分发器后可以通过 register() 获取实例编辑 core/Applicaiton.php...public function run(){$router Router::start();//注意使用命名空间$controller controller\\.$router[controller];$action $router[action];$args $router[args];echo call_user_func_array([$controller::register(),$action],$args);}...通过这种方式可以实现方法调用但是无法控制方法参数比如有时候我们需要在方法参数中使用某个对象实例术语称为依赖注入即把需要使用的实例注入到方法中那么可以通过PHP的高级特性反射来实现。
http://www.sadfv.cn/news/7876/

相关文章:

  • 电影网-个人网站建设论文企业网站优化怎么做
  • 网站报价文档iis 显示网站建设中
  • 网站地图模版wordpress权限 ssh
  • 中国网站备案查询系统内江做网站的公司
  • 如何做好品牌网站建设策划h5页面免费制作
  • 弹簧机东莞网站建设建设厅网站的秘钥怎么买
  • 该去哪里购买网站域名和空间沈阳网站建设开发维护
  • 网站建设表的设计揭阳网站建设
  • 如何做一个门户网站给我一个可以在线观看的免费
  • 霸气业务网站源码医院网站HTML5
  • 山东建设执业资格注册中心网站南京做公司网站公司
  • 网站seo推广排名百度云服务器做asp网站
  • 成都企业网站seo抖音关键词排名系统
  • 会做网站有什么可以做吗海南注册公司的利弊
  • 免费企业网站模板html怎么重新装电脑的wordpress
  • 网站建设推广软件网站价值 批量查询
  • 交易网站seo怎么做企业网站源码vue
  • 众包网站建设上海网站营销推
  • 做设计什么设计比较好的网站襄阳网络推广公司
  • 长沙企业网站建设收费wordpress图纸管理网站
  • 机加工外贸网站网站建设找泉州效率网络
  • 云主机 怎么做网站学校网站建设汇报ppt模板
  • 装潢公司网站模板云购网站做的起来吗
  • 莱芜市住房和城乡建设厅网站昆明网络营销公司哪家比较好
  • 空白的网站怎么建设西安团购网站建设
  • 怎么注册一个网站做色流wordpress编辑文字内容
  • 网站设计师与网站开发工程师广告推广网站
  • 如何推广手机网站自动化东莞网站建设
  • 什么叫网站前台wordpress 发卡插件
  • wap网站使用微信登陆wordpress 多图