php+namespace+autoload机制

namespace 主要作用,防止类名相同导致的加载问题。

__autoload() 魔术方法:

  可以实现 “延迟加载”或者“用时加载”,即只有需要这个类时,才会加载进内存中,避免资源浪费。

当php引擎第一次使用类A,但是找不到时,会自动调用__autoload方法,并将类名“A”作 为参数传入。所以,我们需要的做的就是根据类名,找到对应的文件,并包含进来,如果我们的方法也找不到,那么php引擎就会报错。注意,这里可以只用 require,因为一旦包含进来后,php引擎再遇到类A时,将不会调用__autoload,而是直接使用内存中的类A,不会导致多次包含。

所以,使用__autoload的关键在于,如何根据类名,找到对应类定义的文件。

Yii框架下 设置默认自动加载函数

spl_autoload_register 注册myautoload函数为 __autoload()函数。

spl_autoload_register(array(‘YiiBase‘,‘myautoload‘));

相关链接:

  http://www.cnblogs.com/yjf512/archive/2013/05/14/3077285.html  //讲namespace

  http://www.cnblogs.com/bourneli/archive/2012/09/08/2676965.html  //good 讲autoload

  http://blog.csdn.net/zhaozhi406/article/details/9325581 //Yii中autoload机制

  http://www.eeice.com/archive/design/spl_autoload_register.html  //Yii中autoload机制

时间: 2024-10-10 08:27:41

php+namespace+autoload机制的相关文章

PHP的autoload机制的实现解析

在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利 一.autoload机制概述 在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利.这也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可. 下面是一个实际的例子: 代码如下: /* Person.

PHP autoload与spl_autoload自动加载机制的深入理解

PHP autoload与spl_autoload自动加载机制的深入理解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-05我要评论 本篇文章是对PHP中的autoload与spl_autoload自动加载机制进行了详细的分析介绍,需要的朋友参考下 PHP autoload机制详解(1) autoload机制概述在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利.这 也是OO设计的基本思想

CI框架源码阅读笔记9 CI的自动加载机制autoload

本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前提. CI框架中,允许你配置autoload数组,这样,在你的应用程序初始化时,会自动加载相应的类库,例如,在application/config/autoload.php中,autoload的配置如下: $autoload['libraries'] = array("smarty", "redis"); 则CI框架初始化时,会自动加载l

Linux Container(LXC)容器隔离实现机制

一.LXC概述 LXC(LinuxContainer)是来自于Sourceforge网站上的开源项目,LXC给Linux用户提供了用户空间的工具集,用户可以通过LXC创建和管理容器,在容器中创建运行操作系统就可以有效的隔离多个操作系统,实现操作系统级的虚拟化.最初的Docker容器技术基于LXC进行构建,后来Docker在自己的内核中刨除了LXC. 二.LXC命令介绍 从Linux内核2.6.27版本开始已经支持LXC,只需要在Linux用户态安装相应的用户态工具liblxc即可.下表3-1是L

spl_autoload_register与autoload的区别详解

spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register - 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中.如果该栈中的函数尚未激活,则激活它们.如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中.因为spl_autoload_regi

Namespace:Openstack的网络实现

前言:众所周知在linux系统中PID.IPC.Network等都是全局性的资源,不论什么的改动和删减都会对整个系统造成影响.这也是为什么kvm之类的虚拟化技术须要模拟一个完毕主机系统的原因. 可是.在linux namespace中这些PID.IPC.Network等都不再是全局性的资源.基于namespace的虚拟化技术是内核级别的虚拟化,具有敏捷.安全.资源轻消耗的长处.在云计算的信息化建设中,计算资源和存储资源的虚拟化已经做的非常好并具备了丰富的解决方式.可是网络的虚拟化的技术还在逐步成

Yii框架分析(三)——类加载机制及应用组件的管理、配置、访问、创建

Yii应用的入口脚本引用出了Yii类,Yii类的定义: class Yii extends YiiBase { } 由yiic创建的应用里Yii类只是YiiBase类的“马甲”,我们也可以根据需求定制自己的Yii类. Yii(即YiiBase)是一个“helper class”,为整个应用提供静态和全局访问入口. Yii类的几个静态成员:$_aliases : 存放系统的别名对应的真实路径$_imports :$_classes :$_includePaths php include paths

转:spl_autoload_register与autoload的区别详解

转:http://www.poluoluo.com/jzxy/201306/209614.html spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中.如果该栈中的函数尚未激活,则激活它们.如果在你的程序中已经实现了__a

laravel的源码解析:PHP自动加载功能原理解析

前言 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能.PHP的命名空间.PHP的PSR0与PSR4标准等内容. 一.PHP自动加载功能 PHP自动加载功能的由来 在PHP开发过程中,如果希望从外部引入一个 class,通常会使用 include 和 require 方法,去把定义这个 class 的文件包含进来.这个在小规模开发的时候,没什么大问题.但在大型的开发项目中,使用这种方式会带来一些隐含的问题:如果一个 PHP 文件需要使用很多其它类,那么就需要很多的 requ