【23】用户自定义扩展功能实现

上一个教程中,我们已经实现了公共配置项的实现,这一节中我们来实现用户自定义扩展功能。我们都知道,尽管框架中已经定义许多函数和各种类,但有时候它并不能完全满足我们的需求,所以我们需要引入自己定义的类和函数。

1、在框架配置文件config.php中加入配置

//载入Common/Lib目录下的文件,可以载入多个
‘AUTO_LOAD_FILE‘=>array(),

2、在Application类文件中定义一个私有的静态方法,用来C函数读取用户自定义的配置文件,并循环载入,如下:

private static function _import_user_file(){
		$fileArr=C(‘AUTO_LOAD_FILE‘);
		if(is_array($fileArr) || !empty($fileArr)){
			foreach ($fileArr as $v) {
				require_once COMMON_LIB_PATH.‘/‘.$v;
			}

		}
	}

  

3、Application类文件的run方法进行调用

//载入用户自定义的文件
self::_import_user_file();

4、用户编写自定义函数或类放在根目录下的Common/Lib目录下面,如function1.php、People.class.php

5、在公共配置文件Common/Config/config.php中配置用户自定义文件

‘AUTO_LOAD_FILE‘=>array(‘function1.php‘,‘People.class.php‘),

6、在控制器中调用函数方法或者实例化类

//类
$peopleobj=new People();
$peopleobj->run();

//函数
p($_SERVER);

到这里,用户自定义扩展功能就实现了,感谢后盾网马老师的教程...

时间: 11-28

【23】用户自定义扩展功能实现的相关文章

httpd2.4配置文件详解

1,默认安装目录,配置文件相对路径都基于此目录 ServerRoot "/usr/local/apache" 2,监听套接字: Listen [IP:]port      此指令可以出现多次:用于监听多个不同的套接字: Listen 80 Listen 192.168.1.101:8080 需要重载:usr/local/apache/bin/apachectl -k graceful 3,配置使用keep alive(保持连接)(并发访问量较大的服务器,建议关闭或者较短的持久连接时间)

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

TP3.23开发的分答微信版语音问答系统源码

演示地址:http://yd.168282.com (请在微信中打开演示) 公众号演示:(请直接扫码演示) 9月最新功能如下:1.易答:付费你(我)问,我(你)答,有人付费听,你我分钱.2.录音时自动转MP3格式,支持所有移动端设备3.每晚程序自动结算4.收入.支出 账目明细5.赞赏:如果你觉得答主答得漂亮,可以直接为他点赞6.问题搜索:搜人不够,还想搜问题,我们已经实现了这功能7.拒绝回答:不想回答的问题直接拒绝8.多级分类9.增强答主审核机制10.图文回答,图文提问,可后台开启11.追问功能

Azure通过Vnet Peering和用户自定义路由(UDR)实现hub-spoken连接

Azure的Vnet Peering可以把Azure中不同的Vnet连接起来的技术.底层是通过对NVGRE的租户标签进行修改,实现了不同租户间的互通.这种技术非常类似传统网络中MPLS/VPN不同租户互通的技术.在MPLS/VPN中是对RT值进行控制,实现不同租户间的互通. 但Vnet Peering有一个限制:VNet 对等互连存在于两个 VNet 之间,多个对等互连之间没有任何派生的可传递关系.例如,如果 VNetA 与 VNetB 对等互连,VNetB 与 VNetC 对等互连,但 VNe

[转]Material Design Library 23.1.0的新变化与代码实战

Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView的变化,当然还有Design Lib的一些控件内部实现的变化没有介绍,从而使得在使用新版本的控件时候难免因为版本的不同会发生一些异常,而本人正好在上个星期对一个项目换库时发现了这个问题,什么问题呢? NavigationView使用注意的问题 就是NavigationView的内部实现发生了改变,它

iOS 23 种设计模式

设计模式主要分三个类型:创建型.结构型和行为型. 其中创建型有: 一.Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二.Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类. 三.Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 四.Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使

设计模式学习第一天:23种设计模式(全)

C#常见的设计模式 一.概要: 模式分为三种,设计模式.体系结构模式与惯用法.其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法. 在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式. 工厂.策略.桥接.模板方法.代理等等23种Gof经典模式是属于设计模式,设计模式的粒度相对较小,基本上用于提高模块内部的可扩展性和可维护性需求 三层.MVC.IoC/DI等属于体系结构模式,粒度比设计模式大,它是从项目的整体

【转】23种设计模式简介

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40031567 今天来对这23种设计模式做个总结.咱使用设计模式的目的是为了可重用代码.让代码更容易被他人理解.保证代码可靠性,当然设计模式并不是万能的,项目中的实际问题还有具体分析.咱不能为了使用设计模式而使用,而是在分析问题的过程中,想到使用某种设计模式能达到咱需要的效果,而且比不使用设计模式更有优势,那么咱该考虑使用设计模式了. 一.设计模式的一般分类 创建型(Creator)模式(

java类加载器-----用户自定义类加载器实现

java类加载器主要分为如下几种: jvm提供的类加载器 根类加载器:底层实现,主要加载java核心类库(如:java.lang.*) 扩展类加载器:使用java代码实现,主要加载如:jre/lib/ext/ 下的扩展类库.(父类加载器为根类加载器) 系统类加载器(应用类加载器):使用java代码实现,加载classpath目录下的类.(父类加载器为扩展类加载器) 用户自定义类加载器:去继承ClassLoader类实现自定义类加载器. 类加载器负责将java字节码文件加载到虚拟机内存中也就是类的