拓展Sr核心类
  1. 介绍

    使用框架的时候我们发现所有的操作都是通过Sr::xxx()进行操作的。xxx是系统提供的一些方法。
    Soter允许我们拓展Sr的方法,打造一个我们自己框架。
    比如:
    我们调用Sr::logger($arg1,$arg2,$argn...),同时传递了一系列参数。
    其实Sr不存在方法logger(),但是我们可以通过配置让Sr拥有logger方法。
  2. 配置

    在入口文件里面我们会发现下面的配置:
    						->setSrMethods(array())
    					
    我们看到setSrMethods参数是一个数组,数组的结构和意义,我们下面进行介绍:
    1.参数数组是关联数组。
    2.数组的是要拓展Sr方法的名称。
    3.数组的可以是下面两个情况:
    a.字符串,此时字符串值作为类前缀,这个时候名称的方法的功能是方便的加载classes目录下的类
    b.匿名函数,此时匿名函数就对应名称的方法。
    下面结合实例进行理解:

    1.注册

    首先我们修改入口文件里面的配置注册我们的拓展的方法,如下:
    						->setSrMethods(array(
    							'task' => 'Task',
    							'testMethod' => function($test=null) {
    									return $test;
    								}
    						    ))
    					
    我们会看到数组拓展了两个Sr的方法:Sr::task($className)和Sr::testMethod($test)

    2.调用

    1.我们调用:Sr::task('TestTask')
    加载的类文件是application/classes/Task/TestTask.php
    其实等价于调用:Sr::factory('Task_TestTask')。
    这样做的好处:
    如果Task目录下面是我们经常用的一些功能类,我们可以通过Sr::task($className)方便的
    加载Task目录下面的类库,而不用加上Task前缀,而且逻辑更加清晰。
    2.我们调用:Sr::testMethod('testValue')
    其实我们调用的就是我们注册的下面的匿名函数:
    						function($test=null) {
    							return $test;
    						}
    					
    我们传递给Sr::testMethod('testValue')的参数会依次传递给上面的匿名函数。
    比如上面我们传递了传递给Sr::testMethod('testValue')一个testValue
    那么上面的匿名函数的第一个参数$test值就是testValue
    上面的匿名函数返回值就是Sr::testMethod()的返回值。
    比如:Sr::testMethod('testValue')返回值就是testValue
    因为上面注册的testMethod对应的匿名函数里面直接返回了传入的参数$test。