PHP类的自动加载与命名空间用法实例分析 |
|
本文标签:PHP,类的自动加载,命名空间 本文实例讲述了PHP类的自动加载与命名空间用法 。分享给大家供大家参考,具体如下:
类的自动加载什么是自动加载类? ? ? 从字面意思上就可以大概知道,当调用一个当前页面未定义的类的时候能够自动加载 。 void __autoload ( string $class ) class即为待加载的类名 。php官方手册也有比较好的例子,这里引用一下: ./myClass.php
<?php
//在这里定义一个构造方法
class myClass {
public function __construct() {
echo "myClass init'ed successfuly!!!";
}
}
?>
./index.php
<?php
// 将这些代码写在我们需要用到的地方
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
// 实例化一个类
$obj = new myClass();
?>
"在这一行,我们的"./myClass.php"会被包含进来,这个神奇效果正是我们想要的 你将会得到"myClass init'ed successfuly!!!"的返回结果. 所以,如果你调用了一个类似于"myClass"的类,文件将会包含"myClass.php",前提是该文件存在(如果不存在你将会得到一个引用错误),如果你调用了"Foo","Foo.php"会被引用,诸如此类... 你在也不需要像下面这样写了 。"
<?php
include_once("./myClass.php");
include_once("./myFoo.php");
include_once("./myBar.php");
$obj = new myClass();
$foo = new Foo();
$bar = new Bar();
?>
虽然说这个魔术方法确实很magic,但是他有一个缺点,那就是只能使用一次,当需要多条
直接用例子在说明吧,这里与命名空间一起讲: #新建工程test //首先新建应用目录app,然后在目录下新建一个Test文件夹,文件夹下新建两个类 test/app/Test/Beta.php
<?php
namespace appTest;
class Beta {
public function index() {
echo "appTestBetaindex";
}
}
test/app/Test/Test.php
<?php
namespace appTest;
class Test {
public function index() {
echo "appTestTestindex";
}
}
//新建自动加载类
<?php
namespace appautoload
class Loading {
public static function autoLoad() {
//把 转换层 / , 便于兼容Linux文件找 。Windows 下是通用的
$fileName = str_replace('\', '/', DIR . '\'. $className) . '.php';
if (is_file($fileName)) {
require_once $fileName;
} else {
echo $fileName . ' is not exist'; die;
}
}
}
//新建应用入口文件
define('DIR', dirname(__FILE__));// /.../test
//引入自动加载文件
require DIR . "/autoload/Loading.php";
//自动注册
//这里就是为什么前面写成静态方法的原因
spl_autoload_register("\autoload\Loading::autoLoad");
//然后在下面就可以直接调用类了,只要在前面加上命名空间
$beta = new appTestBeta();
$beta->index();//输出 appTestBetaindex
echo "
";
$test = new appTestTest();
$test->index(); //输出 appTestTestindex
命名空间看到这里相信你应该已经对命名空间有了一个大致的了解,起码知道怎么用 。 什么是命名空间?
所以你可以将他理解为:文件夹 。 。 。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助 。 |