php自动加载

本文深入探讨了PHP中自动加载类的机制,包括function__autoload()的使用与限制,以及spl_autoload_register()的高级应用。通过具体示例,展示了如何自定义自动加载函数,并注册为全局自动加载器,实现更高效、更灵活的类加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function __autoload() 尝试加载未定义的类;

test.php

	<?php
	
	function __autoload($name)
	{
		require($name.'.php');

		echo 'CLASS '.$name.' NOT EXIST!';
	}

	$a = new A();

A.php

	<?php
	
	class A
	{
		public function __construct()
		{
			echo "This is A. ";
		}
	}

执行test.php文件时, 由于没有找到"class A" 会优先调用__autoload方法。


spl_autoload_register() - 注册给定的函数作为 __autoload 的实现

语法:spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool

autoloadDemo.php

	<?php

	spl_autoload_register('myAutoLoad', true, true);

	function myAutoload($className)
	{
		echo "所以包含文件都交给我\r\n";
		$classFileName = "./{$className}.php";
		echo "我来包含{$classFileName}\r\n";
		include "./{$className}.php";
	}
	$objDemo = new AutoloadClass();
	

autoloadClass.php

<?php

	class AutoloadClass
	{
		public function __construct()
		{
			echo "已包括";
		}
	}

执行 autoloadDemo.php 文件, 会调用myAutoLoad方法,这个被spl_autoload_register注册的方法,只接收一个对象参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值