Heim  >  Artikel  >  Backend-Entwicklung  >  php自动加载类 __autoload()函数_PHP教程

php自动加载类 __autoload()函数_PHP教程

WBOY
WBOYOriginal
2016-07-13 10:13:28683Durchsuche

php自动加载类 __autoload()函数

很多开发者写面向对象的应用程序时,对每个类的定义建立一个 PHP 源文件。一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。

在软件开发的系统中,不可能把所有的类都写在一个PHP文件中,当在一个PHP文件中需要调用另一个文件中声明的类时,就需要通过include把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都include进来,是一个很让人头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里我们要讲的自动加载类

在 PHP 5 中,可以定义一个 __autoload()函数,它会在试图使用尚未被定义的类时自动调用,通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类, __autoload()函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形成文件名,比如 xxx_classname.php、classname_xxx.php以及就是classname.php等等。

本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClass2 类

<?php
function __autoload($classname)
{
	require_once $classname . '.php';
}

//MyClass1类不存在时,自动调用__autoload()函数,传入参数”MyClass1”
$obj = new MyClass1();

//MyClass2类不存在时,自动调用__autoload()函数,传入参数”MyClass2”
$obj2 = new MyClass2();
?>

DiscuzX2.5的处理方式为:

<?php
if (function_exists('spl_autoload_register'))
{
	spl_autoload_register(array('core', 'autoload'));
}
else
{
	function __autoload($class)
	{
		return core::autoload($class);
	}
}

 


 

注意:__autoload() 是专门为 类的不存在 而设计的!!!很多框架利用这个函数,实现 类文件的自动加载 !!!

您可能感兴趣的文章

  • 如何设置phpmyadmin自动登陆和取消自动登录
  • PHP检查浏览器参数防止被SQL注入的函数
  • 延迟加载图片的 jQuery 插件(Lazy Load)用法详解
  • php被遗忘的一些功能强大的字符串处理函数
  • php记住密码下次自动登录的实现方法
  • thinkphp自动验证与自动填充无效的解决办法
  • PHP获取当前页面完整url地址函数,包括参数
  • PHP加密解密的函数

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/915939.htmlTechArticlephp自动加载类 __autoload()函数 很多开发者写面向对象的应用程序时,对每个类的定义建立一个PHP源文件。一个很大的烦恼是不得不在每个脚...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn