PHP物件導向程式設計之命名空間與自動載入類詳解

2022-09-29 22:12:30 字數 2548 閱讀 2902

命名空間

避免類名重複,而產生錯誤。

<?php require_once "useful/outputter.php";

class outputter

public function getname()

}$obj = new outputter(); // 同一命名空間下,類名不能相同,預設命名空間為空。空也是一種命名空間。

www.cppcns.com$obj -> setname("jack");

print $obj->getname();

//namespace useful; // 更改命名空間,否則查詢不到hello類,fatal e class 'my\hello' not found

$hello = new hello();

?>

<?php // useful/outputter.php

namespace useful; // 命名空間

class outputter

class hello

?>

如何呼叫命名空間中的類

<?php namespace com\getinstance\util;

class debug

}namespace main;

// com\getinstance\util\debug::helloworld(); // 找不到debug類

\com\getinstance\util\debug::helloworld(); // 加斜槓之後,就從根部去尋找了。

// output:hello from debug

?>

使用use關鍵字

<?php namespace com\getinstance\util;

class debug

}namespace main;

use com\getinstance\util;

//debug::helloworld(); //fatal error: class 'main\debug' not found

util\debug::helloworld();

?>

使用下面的處理,直接可以呼叫類

<?php namespace com\getinstance\util;

class debug

}namespace main;

use com\getinstance\util\debug; // 直接使用到類

debug::helloworld();

?>

\表示全域性

global.php

<?php // no namespace

class lister

}?>

<?php namespace com\getinstance\util;

require_once 'global.php';

class lister

}lister::helloworld(); // access local

\lister::helloworld(); // access global

?>

輸出:hello from com\getinstance\util

hello from global

命名空間加{}

<?php namespace com\getinstance\util

}}namespace main

?>

output:

hello from debug

全域性命名空間

<?php namespace

}}namespace com\getinstance\util

} lister::helloworld(); // access local

\lister::helloworld(); // access global

}?>

__autoload 自動載入類

shopproduct.php

<?php class shopproduct

}?>

<?php function __autoload( $classname )

$product = new shopproduct( 'the darkening', 'harry', 'hunter', 12.99 );

?>

output:

shopproduct constructor

進一步優化處理

位於資料夾business/shopproduct.php

<?php class business_shopproduct

}?>

<?php function __autoload( $classname )

$x = new shopproduct();

$y = new business_shopproduct();

?>

output:

shopproduct constructor

business_shopproduct constructor

PHP物件導向之命名空間

namespace china function getinfo namespace usa function getinfo getinfo i am a america usa getinfo i am a america china getinfo 我是中國人 如果將相對路徑轉成絕對路徑 公共...

PHP學習 30 PHP物件導向 命名空間

namespace spacea const title 我在網上學習php function multi n,m class staff public function get name public function set name,value namespace spaceb const t...

《php物件導向》 第15課 命名空間

命名空間是在php5.3版本以加入的。命名空間乙個最明確的目的就是解決重名問題,php中不允許兩個函式或者類出現相同的名字,否則會產生乙個致命的錯誤。預設情況下,所有常量 類和函式名都放在全域性空間下,就和php支援命名空間之前一樣。命名空間通過關鍵字namespace 來宣告。如果乙個檔案中包含命...