认真学习php面向对象-6

这篇博客详细介绍了如何在PHP中使用面向对象编程模拟框架的display方法来展示view页面。作者通过创建login.html、index.php和Index.class.php文件,演示了如何实现这一功能,并展示了最终效果。
摘要由CSDN通过智能技术生成

认真学习php面向对象-6

前言

准备写一个认真学习php面向对象的系列,使用php来做网页,没有深入了解php的话,可能三板斧就够了,并不需要有多高深!如有错误,欢迎各位不吝赐教!进度安排的话,我学到哪里,就更新到哪里了!形式的话就采用一个需求小案例,然后实现,并附上自己的总结,文章源码

需求 :1)模拟框架模板展示display方法显示view页面

上一节中,我们成功创建了路由资源文件并正确访问了我们定义的方法,那么这一节我们模拟框架常用的方display方法展示view页面。

创建login.html

这里写图片描述
在入口文件中,改写路由规则,强迫每个函数都有一个默认参数display,此处我们使用了匿名函数

index.php
<?php function getMatch($v) { return preg_match('/[a-zA-Z]+/',$v); } $display=function($tpl){ require (getcwd().'/vars'); include (getcwd().'/page/'.$tpl.'.html'); }; $pi=$_SERVER['PATH_INFO']; $pi=isset($_SERVER["PATH_INFO"])?$_SERVER["PATH_INFO"]:false; if(!$pi) exit('404'); $route=require ("request_route"); $route_keys=array_keys($route); foreach ($route_keys as $key) { $new_key=str_replace('/','\/',$key); if (preg_match('/'.$new_key.'/',$pi,$result)) { $route_obj=$route[$key]; if ($route_obj['RequestMethod']==$_SERVER['REQUEST_METHOD']) { $className=$route_obj['Class']; $method=$route_obj['Method']; require (getcwd().'/code/'.$className.".class.php"); $params=array_filter($result,'getMatch',ARRAY_FILTER_USE_KEY); $class_obj=new ReflectionClass($className); $getMethod=$class_obj->getMethod($method); $params['display']=$display; $getMethod->invokeArgs($class_obj->newInstance(),$params); // if($params && count($params)>0) { // $getMethod->invokeArgs($class_obj->newInstance(),$params); // } else { // $getMethod->invoke($class_obj->newInstance()); // } } else { exit('not allowed!'); } } } 
Index.class.php
 /**
     * @RequestMapping("/login",Method=GET)
     */
    public function login($display) {
        $display('login');
    }

记得写完之后,需要编译一下,生成路由资源文件,并且开启php内置服务器,访问
这里写图片描述
这里写图片描述

效果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值