結合__autoload函數或spl_autoload_register函數使用命名空間。以下是使用範例,加上原始加載一共介紹三種使用方法。
代碼佈局:主目錄namespace,下級目錄AutoFolder,主目錄下有index.php入口文件,AutoFolder下有autoload.php和Order.php文件。
index.php
<?php
include_once('AutoFolder/autoload.php');
$order = new AutoFolder\Order();
$order->showName();
autoload.php
<?php
// namespace AutoFolder; #使用命名空間時,只有方法一能用,其他均受限制,方法三需要在spl_autoload_register方法中加入命名空間指定loader方法
//方法一:直接載入
require('Order.php');
//方法二:使用__autoload函數
/*function __autoload($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}*/
//方法三:使用自動函數註冊
/*function loader($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
spl_autoload_register('loader'); */
//方法三擴展:使用類方法
/*class Loader
{
public static function loadClass($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
}
spl_autoload_register(array('Loader', 'loadClass'));
*/
?>
<?php
namespace AutoFolder;
class Order
{
public function __construct()
{
echo 'Class NameSpace is "', __NAMESPACE__, '"';
}
public function showName()
{
echo "<ul><li>I am Order<br />";
}
}
通過index.php加載,然後分別打開註釋看實現。