Ucenter源码解析之--index.php
$m、$a是index.php和admin.php接收的参数。$m代码着将要实例化的类,$a代码着将要调用的method.比如,$m=user,$a=login.则会加载/control/user.php,$m=new usercontrol(),$m->onlogin();
接下来是引入释放版本的model下的文件,如果有会优先引入/release/下面的model文件,没有的话,则使用/model下的文件
、
如果你的$m和$a存在的话,那么,则会使用下面这段代码进行动态的调用。从代码中可以看m只有 以下几种,app、frame、user,这些都对应这个/control下面的几个文件。
然后将对应的control文件加载进来,获得类名,进而实例化类,调用method之前,先判断类是否有该函数,优先调用$method=on.$a方法,如果不存在的话,就使用_call($method)调用;
从下面的图中可以看到m可以实例化成下面对应的对象。至于$a的取值则对于改类下面的方法实现。我们可以做一个小测试.$m=app,$a=add,测试结果如右侧图,至于为什么返回-1,请看/control/app.php下面的onadd()方法。
index.php后面关于addslash函数 的加工,是一种安全措施,一般是为了处理PHP6以上的变化,因为php6已经弃用了MAGIC_QUOTES_GPC,所以服务器不会对$_POST,$_GET,$COOKIE.这些客户端来的数据进行转义。这样就需要使用addslashes对其手工转义,这样单引号‘、双引号",/的特殊字符将不会引发sql注入问题。
上一篇: PHP学习笔记1-常量,函数
下一篇: 关于一朵的10篇文章推荐
推荐阅读
-
Spring5源码解析4-refresh方法之invokeBeanFactoryPostProcessors
-
Laravel框架源码解析之模型Model原理与用法解析
-
Spring源码解析之ConfigurableApplicationContext
-
angularjs 源码解析之injector
-
angularjs 源码解析之scope
-
Java并发之ReentrantLock类源码解析
-
Android图片加载利器之Picasso源码解析
-
Vue源码解析之Template转化为AST的实现方法
-
死磕 java同步系列之Phaser源码解析
-
asp.net abp模块化开发之通用树2:设计思路及源码解析