PHP类的自动加载机制实现方法。具体如下:
Test1.class.php
<?php class Test1 { public static function test() { echo "hello,world!n"; } }
Test2.class.php
<?php class Test2 { public static function test() { echo "你好,世界!n"; } }
test.php
<?php Test1::test();
如果直接写,会报错
Fatal error: Class ‘Test1’ not found in /home/wwwroot/default/codelabs/test.php on line 3
需要引入文件
<?php require "Test1.class.php"; Test1::test();
这样就可以访问了。
但是,如果类越来越多,引入的代码就越来越多。
这个时候需要使用__autoload方法。
<?php Test1::test(); function __autoload($class) { //require "Test1.class.php"; //require "Test2.class.php"; require __DIR__."/".$class.".class.php"; // __DIR__是当前目录的绝对路径 }
当程序发现没有引入类时,会自动调用这个方法,引入类文件。
进一步优化升级,
支持多个自动加载。
<?php spl_autoload_register('__autoload1'); spl_autoload_register('__autoload2'); Test1::test(); Test2::test(); // 当检测到无类加载时,会自动调用这个方法 function __autoload1($class) { //require "Test1.class.php"; //require "Test2.class.php"; require __DIR__."/".$class.".class.php"; // __DIR__是当前目录的绝对路径 } function __autoload2($class) { //require "Test1.class.php"; //require "Test2.class.php"; require __DIR__."/".$class.".class.php"; // __DIR__是当前目录的绝对路径 }
很好,很强大!
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
















请登录后发表评论
注册
社交帐号登录