自己写框架的时候会出现默认控制器和方法都是index的时候,执行两次分析

1,原因:

php5在控制器中会先执行__construct()方法,但在php4中不会执行,于是出现两次index结果的输出

2,解决方法:

  

<?php
class Index extends Controller{

 public function __construct(){
  parent::__construct();
 }

 public function index(){	 //这里会进行两次输出,因为先执行__contruct()方法,而在php4中不会执行
  echo "默认控制器和默认方法";
 }
}
时间: 2024-10-31 11:30:39

自己写框架的时候会出现默认控制器和方法都是index的时候,执行两次分析的相关文章

《自己动手写框架4》:分布式锁的简单实现

分布式锁在分布式应用当中是要经常用到的,主要是解决分布式资源访问冲突的问题.  一开始考虑采用ReentrantLock来实现,但是实际上去实现的时候,是有问题的,ReentrantLock的lock和unlock要求必须是在同一线程进行,而分布式应用中,lock和unlock是两次不相关的请求,因此肯定不是同一线程,因此导致无法使用ReentrantLock. 接下来就考虑采用自己做个状态来进行锁状态的记录,结果发现总是死锁,仔细一看代码,能不锁死么. public synchronized

《自己动手写框架9》:理想的开源框架与设计原则

理想的开源框架?她应该是小的.简单的,满足Simple Is Beautiful?她应该是成长性好的,随着不断的扩展,她可以越来越丰满?她应该是有良好工具支持的,为什么要花时间做工具可以完成的事情呢??她应该是自组装的,也就是尽可能的脱离配置,而是用一种依赖即可用,取消依赖即消失的全自动处理模式?她应该是模块化的,所有的内容都可以被打入jar包而作为一个整体进行发布,并且能支持热部署的,可以开着车儿换轮胎的?她应该是支持水平部署的,想加服务器就加,想减服务器就减?她应该是有良好知识积累体系的,使

《自己动手写框架7》:关于框架体系与战术的思考

什么是框架? 这个问题实际上许多"做框架"的人也不明白. 框架和库的本质不同在于: 框架考虑的是机制的复用,而库主要考虑的是代码的复用 框架考虑的是在机制不变的情况下进行扩展,而库则基本不考虑扩展方面的问题 框架本身是不完整的,在大多数的情况下它自己是干不了啥事情的,而库自身是完整的,可以解决某个领域的问题. 框架是活的,通过不断的扩展与衍生,它就更加强大,而库而是死的,发布时是怎样,就是怎样. 当然,关于这两货之间的比较,还有许多个角度,但我个人觉得本质是我上面举的这些. 设计的时候

我要写框架之MVC(2)------初始化

继续上一篇的内容 本篇讲述MVC框架的初始化工作 我们可以在我们的核心控制器ActionCore里面的init方法进行初始化 之前说过我们用的是注解实现的而不是用xml,所以我们先新建一个注解 @Retention指定的是注解的声明周期,RUNTIME 意思是在运行时 @Target 表示注解定义在哪,而METHOD则代表方法 其中两个属性代表使用注解的时候的参数都是可选的 但有默认值"",使用如下 相信用过spring mvc 的人看到这里都会比较熟悉,就是当有add这个请求来到的时

《自己动手写框架3》:业务流程引擎

一般的时候,我们都采用编程式开发,编程式开发的好处非常明显:直接.高效.自由,当然其缺点也是有的,与其优点刚好相对,因为直接,所以有些变化都要进行代码上的修改:因为高效,所以一旦出问题,导致的结果也比较严重,因为自由,所以带来的修改风险也比较大.  这也就是许多大的公司都在进行流程化开发的重要原因之一,比如:上海普元,Livebos, Justep,还有许许多多知名不知名的公司都有类似的流程化开发引擎存在,通过流程化开发,增强代码的复用性,降低软件开发成本及测试成本,提升软件的可维护性及降低维护

一起写框架-Ioc内核容器的实现-对象的调用[email&#160;protected]注解注入容器的对象(十二)

实现功能 现实需求中,有一些类似无法加入扫描组件注解的.如jdk里面的类. 那么框架必须要支持将没有组件注解标识的类也可以有一个方式注入到容器里面. 那么,我们通过类似Spring的@Bean的方案,来实现这个需求. 通过在配置类的方法的上面,使用@Bean注解,将返回的对象加到容器中. 实现思路 获得有@Configuration注解标识的类.检索它的方法,如果有@Bean,执行这个方法并将返回的对象放在容器中. 实现步骤 1.定义一个Bean注解 1 package ioc.core.ann

【我们一起写框架】MVVM的WPF框架之绑定(二)

MVVM的特点之一是实现数据同步,即,前台页面修改了数据,后台的数据会同步更新. 上一篇我们已经一起编写了框架的基础结构,并且实现了ViewModel反向控制Xaml窗体. 那么现在就要开始实现数据同步了. DataContext—数据上下文 在实现数据同步前,我们要了解一个知识点——DataContext. WPF中每个UI都有一个Content和一个DataContext,那么Content和DataContext是什么呢? Content:Content是指页面内容,即我们编写的代码,或者

《自己动手写框架8》:高屋建瓴,理念先行

<史记·高祖本纪>:"地势便利,其以下兵于诸侯,譬犹居高屋之上建瓴水也."这里用到了高屋建瓴这个词.意思是把瓶子里的水从高层顶上倾倒.比喻居高临下,不可阻遏的形势.现指对事物把握全面,了解透彻.此典故于汉高祖刘邦欲杀功臣韩信,大夫田肯进言到"陛下牢牢地控制着三秦(关中),陛下利用这雄险的地势,来控制.驾御诸侯,就如从高高的屋脊上把水从瓶子里倒下去."以此来表彰韩信的功劳,于是,刘邦赦免了韩信,只是将他降为淮阴侯. 同样,设计企业框架,也要对事物把握全面,

想自己写框架(1)

学了PHP也有一段时间了,从大二到现在,一直停留在某个阶段,没前进.大三用了CI 毕业时用ThinkPHP.还是觉得要自己写一个,会比较彻底. 开始看文件,再做具体分析. 按照经验来看,Common是公共文件,Conf是配置文件,Lang是语言文件,Library是核心类,Mode是数据库链接类,Tpl是模板文件 ThinkPHP.php是核心文件,应该管理统一入口. 先从ThinkPHP.php开始吧. 前面一大堆忽略了 // 加载核心Think类require CORE_PATH.'Thin