ShopCMS 开发文档
HFramework 开发文档

2.7 类的实例化

在使用HFramework开发过程中,除了入口文件和配置文件外,其他所有的文件都是类文件,不论是框架类还是自定义类或者第三方类,您都可以用下面两种方法去实例化:
1:普通方法:
new + 类名(参数), 这种方法是PHP通用的方法,每次都会创建一个新的实例,特点是:
1. 多次实例化类时,程序的效率比较差;
2. 会占用更多的内存;
3. 每个实例都是相互隔离的,同一个类的不同实例间不会互相影响;
4. 可以实例化所有的类(包括框架类和非框架类)

2:框架方法:
H::getObj(类名),这种方法是单利模式实例化类,实际上,类是被实例化了一次,即首次调用“H::getObj(类名)”的时候执行了实例化操作,以后的调用都是返回对该实例的引用;这种方法实例化的特点是:
1. 多次实例化类时,程序执行的效率高;
2. 程序占用的内存少;
3. 各个实例的变量时可以传承的(每个实例都实际上都是对同一个实例的引用,相当于访问的是同一个实例,这是单例模式的特点);

此外,为了书写方便,对于常用的框架类,本框架提供了实例化类的简化写法:
  
1. H::cache(); :根据配置文件中配置的缓存类型,实例化/调用缓存类,等同于:
    H::getObj('HMemcacheCache');
或者:
    H::getObj('HApcCache');
或者:
    H::getObj('HFileCache');
或者:
    H::getObj('HRedisCache');

2. H::db($dbType = 'master');:实例化数据库操作类,等同于:H::getObj($dbType = 'master');

3. H::user();:实例化/调用用户操作类,等同于:H::getObj('HUser');

4. H::view();:实例化/调用用户操作类,等同于:H::getObj('HView');

5. H::file();:实例化/调用主题操作类,等同于:H::getObj('HFile');

6. H::image();:实例化/调用图标处理类,等同于:H::getObj('HImage');

7. H::request ();:实例化/调用客户端请求类,等同于:H::getObj('HRequest');
阅读:2944 | 发布时间:2018-12-29 00:10