MVC框架入门准备(一)

最近开发一套自己的框架,开发了一个多月,已传到git,学到了挺多,系列文章我会慢慢写挺多

这里先讲大致框架多用到的某些函数,我这里先列举一部分,网上对函数的定义,参数说明等,我就不照搬了,我自己学习不会搬这些东西,而是记录自己的理解和测验:

一  get_called_class

谁调用就显示调用的类名(包括继承等),框架中用到了很多,在创建驱动等方面用到了很多。

举例:

class foo {
    static public function test() {
        var_dump(get_called_class());
    }
}
class bar extends foo {
}
foo::test();
bar::test();
输出:
string(3) "foo"
string(3) "bar"

二   func_get_args

获取真实传递的参数,不要忽略了,有些函数有默认值的,这些不算在func_get_args内,在框架中用到的也颇多。主要用于未知用户键入的参数以及多变化的处理情况。

create($name, $type = ‘php‘){
Var_dump(func_get_args());
}

create(‘@‘); ==》
输出array
  0 => string ‘@‘ (length=1)
create(‘@‘,’dd’); ==>
array
  0 => string ‘@‘ (length=1)
  1 => string ‘dd‘ (length=2)

三   call_user_func_array

— 调用回调函数,并把一个数组参数作为回调函数的参数

<?php
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}

call_user_func_array("foobar", array("one", "two"));

$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>  

以上例程的输出类似于:

foobar got one and two
foo::bar got three and four

如你所见,通过载入不同的array配置可以回调不同的方法,可以用于某些事件监听与触发之间

四    ReflectionClass 反射

这当然是一个最为重要的部分。在框架调度的过程中,经常用到反射

//类测试与反射
    class testExtend{
        public function sikao(){
            //echo ‘I am thinking ......‘;
        }

    }
    class test extends testExtend{
        public function __construct()
        {
            echo "i am construct ....";
        }
        const conn = ‘nihao‘;
        const conn1 = ‘nihao‘;
        public $nl = 0;
        public $nl2 = 10;

        public function addNl(){
            $this->nl = 10;
        }
        public function say(){
            echo ‘i am say...‘;
        }
        public function sikao(){
            echo ‘i am thinking......‘;
        }
    }

$ref = new ReflectionClass(‘test‘ );   //参数用类名也可以用对象
    var_dump($ref);
    getClass($a);

    function getClass($className){
        echo ‘<pre>‘;
        $ref = new ReflectionClass($className);
        echo ‘class name is : ‘.$ref->getName().‘<br><br>‘;
        //获取常量
        $contans = $ref->getConstants();
        echo ‘the contans is : ‘;
        foreach ($contans as $k => $v) {
             echo $k . ‘ : ‘ . $v . ‘ || ‘;
        }
        echo ‘<br>‘,‘<br>‘;

        //获取属性
        $shuxing = $ref->getProperties();
        foreach ($shuxing as $k => $v) {
            foreach ($v as $i => $j) {
                if( ‘name‘ == $i){
                    echo ‘the ‘. $k .‘ shuxing is : ‘.$j .‘<br>‘;
                }
            }
        }
        echo ‘<br>‘;

        //获取方法
        $mothods = $ref->getMethods();
        foreach ($mothods as $k => $v) {
            foreach ($v as $i => $j) {
                if( ‘name‘ == $i){
                    echo ‘the ‘. $k .‘ methods is : ‘.$j .‘<br>‘;
                }
            }
        }
    }

 五  __callStatic && __call

__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。

__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。

/**
     * 魔术方法
     *
     * @param type $name
     * @param type $arguments
     * @return type
     */
    public static function __callStatic($name , $arguments ) //$name 为调用方法名,$arguments 为参数
    {
        //$name = get
        // var_dump($arguments);array
        // 0 => string ‘m‘ (length=1)
        // 1 => boolean false
        return call_user_func_array(‘self::getAll‘, array_merge(array ($name), $arguments));
    }
时间: 2024-10-13 12:56:20

MVC框架入门准备(一)的相关文章

spring mvc框架入门

目录 1.web框架分层 2.什么是springmvc 3.springmvc的优势 4.springmvc和struct的区别 (spring mvc框架入门 1.web框架分层 一般web框架可以分为表现层,业务层,持久层 mvc是指表现层的设计模式:model(模型) ,view(视图) 比如jsp html等,controller(控制器) 2.什么是springmvc 3.springmvc的优势 4.springmvc和struct的区别 参考b站黑马视频 原文地址:https://

Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=63 https://www.zhihu.com/question/29444491/answer/146457757 1. Java - Struts框架教程Struts 是Apache软件基金会(ASF)赞助的一个开源项目.通过采用JavaServlet/JSP技术,实现了基于Java EEWeb

spring mvc+ibatis+mysql的组合框架入门实例demo源码下载

原文:spring mvc+ibatis+mysql的组合框架入门实例demo源码下载 源代码下载地址:http://www.zuidaima.com/share/1550463678958592.htm spring mvc+ibatis+mysql的组合框架实例 首页 http://localhost:端口/项目/index.jsp 添加用户 添加地址 项目截图 jar包截图

ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 使用Visual Studio Code开发基于解决方案(sln+csproj)的项目 Visual Studio Code Solution插件( vscode-solution-explorer)基础使用介绍 基于 .NET Core web项目模板构建 ASP.NET Core MVC We

.NET轻量级MVC框架:Nancy入门教程(一)

当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会反问我,微软的MVC到底什么地方不好了?这个暂且不说,我们先认识一下Nancy,来了解一下他和MVC的不同.  一.Nancy简介 什么是Nancy呢?如果你学习过Ruby的话,就会知道Ruby中有个框架叫做Sinatra,Nancy就是Sinatra的.Net版本.如果你感觉微软的MVC过于笨重.

Spring MVC 简述:从MVC框架普遍关注的问题说起

任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题,比如请求的收集与分发.数据前后台流转与转换,当前最流行的SpringMVC和Struts2也不例外.本文首先概述MVC模式的分层思想与MVC框架普遍关注的问题,并以此为契机结合SpringMVC的入门级案例简要地从原理.架构角度介绍了它对这些问题的处理,包括请求处理流程.消息转换机制和数据绑定机制等核心问题.最后,本文对目前最为流行的两个MVC框架SpringMVC 和 一. MVC 模式与框架 1.MVC 模式 Java We

Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

出处:http://www.cnblogs.com/SeeYouBug/p/6401737.html 一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数据的操作的一个封转.可以分为视图模型(view model)和领域模型(domain models),视图模型就是在视图与控制器之间传输数据的一个封转,而领域模型就是业务逻辑,后台数据模型等的一个集

简述MVC框架模式以及在你(Android)项目中得应用

标题是阿里电话面试的问题,一直以为自己很清楚MVC模式,结果被问到时,这M.V.C这几者之间的关系都搞不清楚了,最主要是,没法将MVC和Android中各个组件对应起来,所以,面试肯定挂了,不过面试也是学习的一种方式,可以知道大公司看中什么,以及自己还有哪些知识漏洞,例如这次面试就学到了很多东西. 大家也可以在看下面的内容之前,也想想能否把MVC及与Android各个组件的对应关系讲清楚,看是否还有和我一样对MVC一知半解的.  如果写的有问题的地方,欢迎讨论.转载请注明出处:http://ww

Spring Mvc的入门

SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. Spring Web MVC是什么: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. Spring