国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHP ??????(??????)

PHP 5.3?? PHP ??????(namespace)? ???????.

??????? ?????? ????? ??? ??????? ??? ????? ?????. ? ???? ??? ?? ??? ??? ? ????. ?? ?? ???????

????? ?? ??? ????? ? ????, ????? ?? ??? ?? ?????? ??? ???. ?? ??, foo.txt ??? /home/greg ? /home/other ????? ??? ??? ? ??? ? ?? foo.txt ??? ??? ????? ??? ?? ????. ?? /home/greg ???? ???

foo.txt ??? ???? ? /home/greg/foo.txt? ????? ?? ?? ?? ???? ??? ???? ?? ??? ??? ???. ????? ??? ???? ? ??? ??



?????? ????.

PHP ??????? ?? ? ?? ??? ??? ??? ? ????. 1. PHP ?? ???/??/?? ?? ?? ???/??/?? ?? ?? ??.

2. ?? ??? ???? ??? ?? ?? ? ??? ??(????? ? ?? ??? ??? ???? ?? ???)? ?? ??(?? ??) ??? ????.


?????? ?? ????? ?? ??, ??? ? ?? ??? PHP? ??????? ???? ?? ????? ?? ??? ?????.

??????? ??? ??????? ???? ?????. ??? ??????? ???? ??? ?? ?? ???? ?? ??????? ???? ???.

??? ??? ????.

<?php
// 定義代碼在 'MyProject' 命名空間中
namespace MyProject;
// ... 代碼 ...
?>
你也可以在同一個(gè)文件中定義不同的命名空間代碼,如:
<?php
namespace MyProject1;
// MyProject1 命名空間中的PHP代碼
namespace MyProject2;
// MyProject2 命名空間中的PHP代碼
// 另一種語法
namespace MyProject3 {
// MyProject3 命名空間中的PHP代碼
}
?>
??????? ???? ?? ??? ??? ??? ?? ??? ??? ???? ??????. ????????. ?? ?? ??? ??? ?? ? PHP ??? ?????? ?? ?? ??? ? ????:

<?php
 declare(encoding='UTF-8'); //定義多個(gè)命名空間和不包含在命名空間中的代碼
 namespace MyProject {
 
     const CONNECT_OK = 1;
     class Connection { /* ... */ }
     function connect() { /* ... */  }
 }
 
 namespace { // 全局代碼
     session_start();
     $a = MyProject\connect();
     echo MyProject\Connection::start();
 }
 ?>

. ?? ???

<html>
 <?php
 namespace MyProject; // 命名空間前出現(xiàn)了“<html>” 會(huì)致命錯(cuò)誤 - 命名空間必須是程序腳本的第一條語句
 ?>


??? ?????. ?????? ? ????? ?? ?? ??? ?? ?????. PHP ??????? ???? ??? ?????? ??? ??? ?? ????. ??? ?????? ??? ??? ???? ??? ? ????.

<?php
 namespace MyProject\Sub\Level;  //聲明分層次的單個(gè)命名空間
 const CONNECT_OK = 1;
 class Connection { /* ... */ }
 function Connect() { /* ... */  }
 
 ?>

?? ???? ?? MyProjectSubLevelCONNECT_OK, MyProjectSubLevelConnection ??? ? MyProjectSubLevelConnect ??? ????.


?????? ???

?????? ?? ??? ???? ?? PHP? ??? ?????? ??? ??? ??? ???? ???. PHP ??????? ?? ???? ???? ??? ? ????. ?? ???? ??? ???? ??? ? ??? ????:

1. foo.txt? ?? ?? ?? ?? ??. currentdirectory/foo.txt? ?? ?????. ??? currentdirectory? ?? ????? ?????. ??? ?? ????? /home/foo?? ?? ??? /home/foo/foo.txt? ?????.

2. ?????? ??????/foo.txt ?????. currentdirectory/subdirectory/foo.txt? ?? ?????. ? ?

3. ?? ???? /main/foo.txt ?????. ?? /main/foo.txt? ?? ?????.

PHP ??????? ??? ??? ??? ?????. ?? ?? ??? ??? ?? ? ?? ???? ??? ? ????.

1. ????? ?? ?? ?? ??? ? ?? ??? ??(?: $a=) ??? foo(); ?? foo::staticmethod();. ?? ??????? currentnamespace?? foo? currentnamespacefoo? ?????. foo? ???? ??? ?? ???? ?? ???????? ??? ???? ?? ?? foo? foo? ?????. ??: ??????? ?? ?? ??? ???? ?? ?? ????? ?? ?? ?? ?? ??? ?? ?? ?? ?? ???? ?????.

2. $a = new subnamespacefoo() ?? subnamespacefoo::staticmethod();? ?? ??? ? ??? ?? ?? ?????. ?? ??????? currentnamespace?? foo? currentnamespacesubnamespacefoo? ?????. foo? ???? ??? ?? ??? ??, ?? ???????? ???? ?? ??? foo? subnamespacefoo? ?????.

3.? ???? ?? ?? ?? ??? ???? ???? ?? ?: $a = new currentnamespacefoo::staticmethod ( );. ? ?? foo? ?? ???? ??? ?? currentnamespacefoo? ?????.

??? ? ? ?? ??? ??? ????.

?

<?php
 namespace Foo\Bar\subnamespace;
 
 const FOO = 1;
 function foo() {}
 class foo
 {
     static function staticmethod() {}
 }
 ?>

?

<?php
 namespace Foo\Bar;
 include 'file1.php';
 
 const FOO = 2;
 function foo() {}
 class foo
 {
     static function staticmethod() {}
 }
 
 /* 非限定名稱 */
 foo(); // 解析為 Foo\Bar\foo resolves to function Foo\Bar\foo
 foo::staticmethod(); // 解析為類 Foo\Bar\foo的靜態(tài)方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod
 echo FOO; // resolves to constant Foo\Bar\FOO
 
 /* 限定名稱 */
 subnamespace\foo(); // 解析為函數(shù) Foo\Bar\subnamespace\foo
 subnamespace\foo::staticmethod(); // 解析為類 Foo\Bar\subnamespace\foo,
 // 以及類的方法 staticmethod
 echo subnamespace\FOO; // 解析為常量 Foo\Bar\subnamespace\FOO
 
 /* 完全限定名稱 */
 \Foo\Bar\foo(); // 解析為函數(shù) Foo\Bar\foo
 \Foo\Bar\foo::staticmethod(); // 解析為類 Foo\Bar\foo, 以及類的方法 staticmethod
 echo \Foo\Bar\FOO; // 解析為常量 Foo\Bar\FOO
 ?>

?? ???, ?? ?? ??? ?????? strlen(), Exception ?? INI_ALL? ?? ???? ??? ??? ? ????.


?????? ?? ?? ???, ?? ? ??? ???:

?????


?????? ? ?? ?? ??

PHP ?????? ?? ??? ?? ??: ?? ??? ???? ??. ??? ?? ??? ??????? ????? ?? ??? ???? ??????.

????

<?php
 namespace Foo;
 
 function strlen() {}
 const INI_ALL = 3;
 class Exception {}
 
 $a = \strlen('hi'); // 調(diào)用全局函數(shù)strlen
 $b = \INI_ALL; // 訪問全局常量 INI_ALL
 $c = new \Exception('error'); // 實(shí)例化全局類 Exception
 ?>

???? ?? ??:

??? ??::__?? ?? ?? global

? ???? ??(?????? ???? ??? ??? ??)? ???? ???. ?? ??? ??, ?? ?? ?? ?? ????? ???? ??? ???? ?? ??? ??? ???? ?? ????? ???? ????.


????

?????? ??? ?? ?? ???

<?php
 class classname
 {
     function __construct()
     {
         echo __METHOD__,"\n";
     }
 }
 function funcname()
 {
     echo __FUNCTION__,"\n";
 }
 const constname = "global";
 
 $a = 'classname';
 $obj = new $a; // prints classname::__construct
 $b = 'funcname';
 $b(); // prints funcname
 echo constant('constname'), "\n"; // prints global
 ?>

???? ?? ?? :

classname::__construct ?? ?? ??? ??? ??::__?? ?? ?? ??? ?????????????::__construct ?????????????::__construct ???????????? ???????????? ??????? ?? ??????


?????? ??? ? __NAMESPACE__ ??

PHP? ??? ?????. ?? ?????? ?? ??? ????? ? ?? ?? ???? __NAMESPACE__ ?? ??? ?????? ??????.

?? __NAMESPACE__? ?? ?? ??????? ??? ???? ??????. ??????? ???? ?? ?? ???? ? ???? ?????.

?

__NAMESPACE__ ?, in

<?php
 namespace namespacename;
 class classname
 {
     function __construct()
     {
         echo __METHOD__,"\n";
     }
 }
 function funcname()
 {
     echo __FUNCTION__,"\n";
 }
 const constname = "namespaced";
 
 include 'example1.php';
 
 $a = 'classname';
 $obj = new $a; // prints classname::__construct
 $b = 'funcname';
 $b(); // prints funcname
 echo constant('constname'), "\n"; // prints global
 /* note that if using double quotes, "\namespacename\classname" must be used */
 $a = '\namespacename\classname';
 $obj = new $a; // prints namespacename\classname::__construct
 $a = 'namespacename\classname';
 $obj = new $a; // also prints namespacename\classname::__construct
 $b = 'namespacename\funcname';
 $b(); // prints namespacename\funcname
 $b = '\namespacename\funcname';
 $b(); // also prints namespacename\funcname
 echo constant('\namespacename\constname'), "\n"; // prints namespaced
 echo constant('namespacename\constname'), "\n"; // also prints namespaced
 ?>

??????? ?? ???? ?? ??:

"MyProject"

Instance

__NAMESPACE__ ?, ?? ??

<?php
 namespace MyProject;
 header("Content-type:text/html;charset=utf-8");    //設(shè)置編碼
 echo '"', __NAMESPACE__, '"'; // 輸出 "MyProject"
 ?>

???? ?? ??:

""

????

?? __NAMESPACE__? ??? ???? ??? ? ?????. ?:

__NAMESPACE__? ???? ???? ?? ??

<?php
 header("Content-type:text/html;charset=utf-8");    //設(shè)置編碼
 
 echo '"', __NAMESPACE__, '"'; // 輸出 "MyProject"
 ?>

namespace ???? ?? ??????? ?? ??????? ??? ????? ????? ? ??? ? ????. ???? self ???? ?????.

????

?????? ???, ??????? ??

<?php
 namespace MyProject;
 
 function get($classname)
 {
     $a = __NAMESPACE__ . '\' . $classname;
     return new $a;
 }
 ?>

????

?????? ???, ?? ??

<?php
 namespace MyProject;
 
 use blah\blah as mine; // see "Using namespaces: importing/aliasing"
 
 blah\mine(); // calls function blah\blah\mine()
 namespace\blah\mine(); // calls function MyProject\blah\mine()
 
 namespace\func(); // calls function MyProject\func()
 namespace\sub\func(); // calls function MyProject\sub\func()
 namespace\cname::method(); // calls static method "method" of class MyProject\cname
 $a = new namespace\sub\cname(); // instantiates object of class MyProject\sub\cname
 $b = namespace\CONSTANT; // assigns value of constant MyProject\CONSTANT to $b
 ?>

?????? ??: alias/import

PHP ?????? ???? ?? ?? ????? ???? ? ?? ??: ??? ??? ??? ????? ?????? ??? ??? ?????. PHP? ??? ??? ??? ???? ????.

PHP?? ????? ??? ??? ?? ?????. ??? ??? ? ?? ???? ??? ?? ???? ????.


1, use ???? ???? ?? ????/??

<?php
 namespace\func(); // calls function func()
 namespace\sub\func(); // calls function sub\func()
 namespace\cname::method(); // calls static method "method" of class cname
 $a = new namespace\sub\cname(); // instantiates object of class sub\cname
 $b = namespace\CONSTANT; // assigns value of constant CONSTANT to $b
 ?>

2. ? ?? ?? ?? use ?? ?????.

<?php
 namespace foo;
 use My\Full\Classname as Another;
 
 // 下面的例子與 use My\Full\NSname as NSname 相同
 use My\Full\NSname;
 
 // 導(dǎo)入一個(gè)全局類
 use \ArrayObject;
 
 $obj = new namespace\Another; // 實(shí)例化 foo\Another 對(duì)象
 $obj = new Another; // 實(shí)例化 My\Full\Classname 對(duì)象
 NSname\subns\func(); // 調(diào)用函數(shù) My\Full\NSname\subns\func
 $a = new ArrayObject(array(1)); // 實(shí)例化 ArrayObject 對(duì)象
 // 如果不使用 "use \ArrayObject" ,則實(shí)例化一個(gè) foo\ArrayObject 對(duì)象
 ?>

3. ?? ?? ????

<?php
 use My\Full\Classname as Another, My\Full\NSname;
 
 $obj = new Another; // 實(shí)例化 My\Full\Classname 對(duì)象
 NSname\subns\func(); // 調(diào)用函數(shù) My\Full\NSname\subns\func
 ?>

4. ???? ?? ????

<?php
 use My\Full\Classname as Another, My\Full\NSname;
 
 $obj = new Another; // 實(shí)例化一個(gè) My\Full\Classname 對(duì)象
 $a = 'Another';
 $obj = new $a;      // 實(shí)際化一個(gè) Another 對(duì)象
 ?>


?????? ??: ?? ?? ??/??

PHP? ?????? ??? ????? ?? ???, ?? ?? ?? ??? ???? ?? ?? ?? ??? ???? ??? ?????. ??? ??? ?? ?? ??????? ???? ?????. ??? ??? ??? ??? ??????? ???? ?? ??? ??? ???? ?? ???? ??

? ???? ???. ?:

1. ??????

<?php
 use My\Full\Classname as Another, My\Full\NSname;
 
 $obj = new Another; // instantiates object of class My\Full\Classname
 $obj = new \Another; // instantiates object of class Another
 $obj = new Another\thing; // instantiates object of class My\Full\Classname\thing
 $obj = new \Another\thing; // instantiates object of class Another\thing
 ?>

?? ?? ???? ??????.

??? ??? ??, ??? ??? ?? ??????? ??? PHP? ?? ??? ??? ??? ???? ???.

2. ??????? ?? ??/?? ??

<?php
 namespace A\B\C;
 class Exception extends \Exception {}
 
 $a = new Exception('hi'); // $a 是類 A\B\C\Exception 的一個(gè)對(duì)象
 $b = new \Exception('hi'); // $b 是類 Exception 的一個(gè)對(duì)象
 
 $c = new ArrayObject; // 致命錯(cuò)誤, 找不到 A\B\C\ArrayObject 類
 ?>


?? ??

??????? ???? ??? PHP? ?????? ??? ???? ?? ????? ?? ???? ??? ?? ??? ?????. ?? ???? ??? ?? ??????? ???? ??? ?? ??? ??? ?????.

????

?? ?? ?? ??

<?php
 namespace A\B\C;
 
 const E_ERROR = 45;
 function strlen($str)
 {
     return \strlen($str) - 1;
 }
 
 echo E_ERROR, "\n"; // 輸出 "45"
 echo INI_ALL, "\n"; // 輸出 "7" - 使用全局常量 INI_ALL
 
 echo strlen('hi'), "\n"; // 輸出 "1"
 if (is_array('hi')) { // 輸出 "is not array"
     echo "is array\n";
 } else {
     echo "is not array\n";
 }
 ?>

?????? ??

??????? ?? ??? ???? ??? ? ?? ??? ???? ?? ?? ? ???? ?? ??? ???????.

<?php
 namespace A\B\C;
 
 /* 這個(gè)函數(shù)是 A\B\C\fopen */
 function fopen() {
     /* ... */
     $f = \fopen(...); // 調(diào)用全局的fopen函數(shù)
     return $f;
 }
 ?>

?? ??? ?? ??? ????.

1 ???? ??? ?? ??, ??? ? ??? ?? ??? ??? ? ?????. ??. ?? ?? ? AB? ??? AB? ?????.

2. ?? ????? ?? ??? ???? ??(??? ????? ?? ??)? ?? ???? ??? ?? ??? ??? ?????. ?? ?? ?????? ABC? C? ??? ?? CDe()? ?? ??? ABCDe()? ?????.

3. ?????? ??? ???? ??? ?? ???? ?? ?? ???? ?? ??? ?? ?????? ??? ?????. ?? ??, CDe()? ?????? AB ??? ???? CDe()? ABCDe()? ?????.

4. ????? ?? ??? ??? ?? ???? ??? ?? ??? ??? ?????(?? ???? ?? ?? ?? ??? ???). ?? ?? ?????? ABC? C? ??? ?? new C()? new ABC()? ?????.

5. ??????(?: AB) ??? ????? ?? ??? ?? ?? ??? ???? ?????. ?? ?? foo() ??? ?? ??? ??? ?? ?? ?????.

1. ?? ???????? ABfoo()?? ??? ????.

2 ?? ?? foo? ?? ??? ???. () ????.

6. ??????(?: AB) ??? ????? ?? ?? ?? ???? ?? ???(??? ????? ?? ??)? ?? ??? ???? ?????. new C()? new DE()? ???? ?? ?? ??? ??? ????. new C() ?? ??:

1. ?? ???????? ABC ???? ????.

2. ABC ???? ???? ??? ???.

? DE() ??:

3. ??? ?? ?? ?? ?????? ??? ???? ABDE? ??? ? ?? ???? ?????.

4. ABDE ???? ???? ??? ???.

??? ???????? ??? ???? ????? ???? ??? new C()? ???? ???.



???? ??
||
<?php namespace namespacename; class classname { function __construct() { echo __METHOD__,"\n"; } } function funcname() { echo __FUNCTION__,"\n"; } const constname = "namespaced"; include 'example1.php'; $a = 'classname'; $obj = new $a; // prints classname::__construct $b = 'funcname'; $b(); // prints funcname echo constant('constname'), "\n"; // prints global /* note that if using double quotes, "\\namespacename\\classname" must be used */ $a = '\namespacename\classname'; $obj = new $a; // prints namespacename\classname::__construct $a = 'namespacename\classname'; $obj = new $a; // also prints namespacename\classname::__construct $b = 'namespacename\funcname'; $b(); // prints namespacename\funcname $b = '\namespacename\funcname'; $b(); // also prints namespacename\funcname echo constant('\namespacename\constname'), "\n"; // prints namespaced echo constant('namespacename\constname'), "\n"; // also prints namespaced ?>