PHP學(xué)習(xí)總結(jié)

作為一種通用開源腳本語言赎瑰,PHP可以在不同的平臺上運(yùn)行(Windows召庞、LinuxUnix锡垄、MacOS X 等)沦零,它可以和目前幾乎所有的服務(wù)器相兼容(Apache、IIS 等)货岭,同時也提供了廣泛的數(shù)據(jù)庫支持路操。在學(xué)習(xí)PHP之前, 我們要知道PHP能做哪些事情疾渴,簡單列舉如下

  • PHP 可以生成動態(tài)頁面內(nèi)容
  • PHP 可以創(chuàng)建、打開屯仗、讀取搞坝、寫入、關(guān)閉服務(wù)器上的文件
  • PHP 可以收集表單數(shù)據(jù)
  • PHP 可以發(fā)送和接收 cookies
  • PHP 可以添加魁袜、刪除桩撮、修改您的數(shù)據(jù)庫中的數(shù)據(jù)
  • PHP 可以限制用戶訪問您的網(wǎng)站上的一些頁面
  • PHP 可以加密數(shù)據(jù)

基本語法

變量

PHP中變量命名遵循以下規(guī)則:

  • 變量以 $ 符號開始,后面跟著變量的名稱;
  • 變量名必須以字母或者下劃線字符開始峰弹;
  • 變量名只能包含字母數(shù)字字符以及下劃線(A-z店量、0-9 和 _ );
  • 變量名不能包含空格并區(qū)分大小寫鞠呈;

PHP的變量作用域有四種:local融师、global、static蚁吝、parameter旱爆;
在所有函數(shù)外部定義的變量即全局變量可以被腳本中的任何部分訪問,想要訪問全局變量需要使用 global 關(guān)鍵字灭将。

<?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; // 輸出 15
?>

PHP 將所有全局變量存儲在一個名為 $GLOBALS[] 的數(shù)組中疼鸟。 index 保存變量的名稱。這個數(shù)組可以在函數(shù)內(nèi)部訪問庙曙,也可以直接用來更新全局變量空镜。
上面的實(shí)例可以寫成這樣:

數(shù)組中的元素可以按字母或數(shù)字順序進(jìn)行降序或升序排列。

  • sort() - 對數(shù)組進(jìn)行升序排列
  • rsort() - 對數(shù)組進(jìn)行降序排列
  • asort() - 根據(jù)關(guān)聯(lián)數(shù)組的值捌朴,對數(shù)組進(jìn)行升序排列
  • ksort() - 根據(jù)關(guān)聯(lián)數(shù)組的鍵吴攒,對數(shù)組進(jìn)行升序排列
  • arsort() - 根據(jù)關(guān)聯(lián)數(shù)組的值,對數(shù)組進(jìn)行降序排列
  • rsort() - 根據(jù)關(guān)聯(lián)數(shù)組的鍵砂蔽,對數(shù)組進(jìn)行降序排列

超級全局變量

PHP中預(yù)定義了幾個超級全局變量(superglobals) 洼怔,這意味著它們在一個腳本的全部作用域中都可用。 你不需要特別說明左驾,就可以在函數(shù)及類中使用镣隶。
PHP 超級全局變量列表:$GLOBALS, $_SERVER, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION;

$GLOBALS

$GLOBALS 是PHP的一個超級全局變量組,在一個PHP腳本的全部作用域中都可以訪問诡右。
$GLOBALS 是一個包含了全部變量的全局組合數(shù)組安岂。變量的名字就是數(shù)組的鍵。
以下實(shí)例介紹了如何使用超級全局變量 $GLOBALS:

$x = 75; 
$y = 25;
function addition() 
{ 
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
addition(); 
echo $z; 

$_SERVER

$_SERVER 是一個包含了諸如頭信息(header)帆吻、路徑(path)域那、以及腳本位置(script locations)等等信息的數(shù)組。這個數(shù)組中的項(xiàng)目由 Web 服務(wù)器創(chuàng)建猜煮。不能保證每個服務(wù)器都提供全部項(xiàng)目次员;服務(wù)器可能會忽略一些败许,或者提供一些沒有在這里列舉出來的項(xiàng)目。
以下實(shí)例中展示了如何使用$_SERVER中的元素:

元素/代碼 描述
$_SERVER['PHP_SELF'] 當(dāng)前執(zhí)行腳本的文件名淑蔚,與 document root 有關(guān)市殷。例如,在地址為 http://example.com/test.php/foo.bar 的腳本中使用
$_SERVER['PHP_SELF'] 將得到 /test.php/foo.bar束倍。FILE 常量包含當(dāng)前(例如包含)文件的完整路徑和文件名被丧。 從 PHP 4.3.0 版本開始,如果 PHP 以命令行模式運(yùn)行绪妹,這個變量將包含腳本名甥桂。之前的版本該變量不可用。
$_SERVER['GATEWAY_INTERFACE'] 服務(wù)器使用的 CGI 規(guī)范的版本邮旷;例如黄选,"CGI/1.1"。
$_SERVER['SERVER_ADDR'] 當(dāng)前運(yùn)行腳本所在的服務(wù)器的 IP 地址婶肩。
$_SERVER['SERVER_NAME'] 當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名办陷。如果腳本運(yùn)行于虛擬主機(jī)中,該名稱是由那個虛擬主機(jī)所設(shè)置的值決定律歼。(如: www.runoob.com)
$_SERVER['SERVER_SOFTWARE'] 服務(wù)器標(biāo)識字符串民镜,在響應(yīng)請求時的頭信息中給出。 (如:Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] 請求頁面時通信協(xié)議的名稱和版本险毁。例如制圈,"HTTP/1.0"。
$_SERVER['REQUEST_METHOD'] 訪問頁面使用的請求方法畔况;例如鲸鹦,"GET", "HEAD","POST"跷跪,"PUT"馋嗜。
$_SERVER['REQUEST_TIME'] 請求開始時的時間戳。從 PHP 5.1.0 起可用吵瞻。 (如:1377687496)
$_SERVER['QUERY_STRING'] query string(查詢字符串)葛菇,如果有的話,通過它進(jìn)行頁面訪問橡羞。
$_SERVER['HTTP_ACCEPT'] 當(dāng)前請求頭中 Accept: 項(xiàng)的內(nèi)容熟呛,如果存在的話。
$_SERVER['HTTP_ACCEPT_CHARSET'] 當(dāng)前請求頭中 Accept-Charset: 項(xiàng)的內(nèi)容尉姨,如果存在的話。例如:"iso-8859-1,*,utf-8"吗冤。
$_SERVER['HTTP_HOST'] 當(dāng)前請求頭中 Host: 項(xiàng)的內(nèi)容又厉,如果存在的話九府。
$_SERVER['HTTP_REFERER'] 引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址(如果存在)。由 user agent 設(shè)置決定覆致。并不是所有的用戶代理都會設(shè)置該項(xiàng)侄旬,有的還提供了修改 HTTP_REFERER 的功能。簡言之煌妈,該值并不可信儡羔。)
$_SERVER['HTTPS'] 如果腳本是通過 HTTPS 協(xié)議被訪問,則被設(shè)為一個非空的值璧诵。
$_SERVER['REMOTE_ADDR'] 瀏覽當(dāng)前頁面的用戶的 IP 地址汰蜘。
$_SERVER['REMOTE_HOST'] 瀏覽當(dāng)前頁面的用戶的主機(jī)名。DNS 反向解析不依賴于用戶的 REMOTE_ADDR之宿。
$_SERVER['REMOTE_PORT'] 用戶機(jī)器上連接到 Web 服務(wù)器所使用的端口號族操。
$_SERVER['SCRIPT_FILENAME'] 當(dāng)前執(zhí)行腳本的絕對路徑。
$_SERVER['SERVER_ADMIN'] 該值指明了 Apache 服務(wù)器配置文件中的 SERVER_ADMIN 參數(shù)比被。如果腳本運(yùn)行在一個虛擬主機(jī)上色难,則該值是那個虛擬主機(jī)的值。(如:someone@runoob.com)
$_SERVER['SERVER_PORT'] Web 服務(wù)器使用的端口等缀。默認(rèn)值為 "80"枷莉。如果使用 SSL 安全連接,則這個值為用戶設(shè)置的 HTTP 端口尺迂。
$_SERVER['SERVER_SIGNATURE'] 包含了服務(wù)器版本和虛擬主機(jī)名的字符串笤妙。
$_SERVER['PATH_TRANSLATED'] 當(dāng)前腳本所在文件系統(tǒng)(非文檔根目錄)的基本路徑。這是在服務(wù)器進(jìn)行虛擬到真實(shí)路徑的映像后的結(jié)果枪狂。
$_SERVER['SCRIPT_NAME'] 包含當(dāng)前腳本的路徑危喉。這在頁面需要指向自己時非常有用。FILE 常量包含當(dāng)前腳本(例如包含文件)的完整路徑和文件名州疾。
$_SERVER['SCRIPT_URI'] URI 用來指定要訪問的頁面辜限。例如 "/index.html"。

$_REQUEST

PHP $_REQUEST 用于收集HTML表單提交的數(shù)據(jù)严蓖。
以下實(shí)例顯示了一個輸入字段(input)及提交按鈕(submit)的表單(form)薄嫡。 當(dāng)用戶通過點(diǎn)擊 "Submit" 按鈕提交表單數(shù)據(jù)時, 表單數(shù)據(jù)將發(fā)送至<form>標(biāo)簽中 action 屬性中指定的腳本文件。 在這個實(shí)例中颗胡,我們指定文件來處理表單數(shù)據(jù)毫深。如果你希望其他的PHP文件來處理該數(shù)據(jù),你可以修改該指定的腳本文件名毒姨。 然后哑蔫,我們可以使用超級全局變量 $_REQUEST 來收集表單中的 input 字段數(shù)據(jù):

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

魔術(shù)變量

PHP 向它運(yùn)行的任何腳本提供了大量的預(yù)定義常量。
不過很多常量都是由不同的擴(kuò)展庫定義的,只有在加載了這些擴(kuò)展庫時才會出現(xiàn)闸迷,或者動態(tài)加載后嵌纲,或者在編譯時已經(jīng)包括進(jìn)去了。
有八個魔術(shù)常量它們的值隨著它們在代碼中的位置改變而改變腥沽。

  • LINE 文件中的當(dāng)前行號逮走。
  • FILE 文件的完整路徑和文件名。如果用在被包含文件中今阳,則返回被包含的文件名师溅。
  • DIR 文件所在的目錄。如果用在被包括文件中盾舌,則返回被包括的文件所在的目錄墓臭。
  • FUNCTION 函數(shù)名稱(PHP 4.3.0 新加)。
  • CLASS 類的名稱(PHP 4.3.0 新加)矿筝。自 PHP 5 起本常量返回該類被定義時的名字(區(qū)分大小寫)起便。
  • TRAIT Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起窖维,PHP 實(shí)現(xiàn)了代碼復(fù)用的一個方法榆综,稱為 traits。
    Trait 名包括其被聲明的作用區(qū)域(例如 Foo\Bar)铸史。
    從基類繼承的成員被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆蓋鼻疮。其行為 MyHelloWorld 類中定義的方法一致。優(yōu)先順序是當(dāng)前類中的方法會覆蓋 trait 方法琳轿,而 trait 方法又覆蓋了基類中的方法判沟。
  • METHOD 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區(qū)分大小寫)崭篡。
  • NAMESPACE 當(dāng)前命名空間的名稱(區(qū)分大小寫)挪哄。

命名空間

PHP 命名空間(namespace)是在PHP 5.3中加入的,如果你學(xué)過C#和Java琉闪,那命名空間就不算什么新事物迹炼。 不過在PHP當(dāng)中還是有著相當(dāng)重要的意義。
PHP 命名空間可以解決以下兩類問題:

  • 用戶編寫的代碼與PHP內(nèi)部的類/函數(shù)/常量或第三方類/函數(shù)/常量之間的名字沖突颠毙。
  • 為很長的標(biāo)識符名稱(通常是為了緩解第一類問題而定義的)創(chuàng)建一個別名(或簡短)的名稱斯入,提高源代碼的可讀性。

命名空間運(yùn)用

PHP 命名空間中的類名可以通過三種方式引用:

  • 非限定名稱蛀蜜,或不包含前綴的類名稱刻两,例如 $a=new foo(); 或 foo::staticmethod();。如果當(dāng)前命名空間是 currentnamespace滴某,foo 將被解析為 currentnamespace\foo磅摹。如果使用 foo 的代碼是全局的滋迈,不包含在任何命名空間中的代碼,則 foo 會被解析為foo偏瓤。 警告:如果命名空間中的函數(shù)或常量未定義杀怠,則該非限定的函數(shù)名稱或常量名稱會被解析為全局函數(shù)名稱或常量名稱。
  • 限定名稱,或包含前綴的名稱厅克,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果當(dāng)前的命名空間是 currentnamespace橙依,則 foo 會被解析為 currentnamespace\subnamespace\foo证舟。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼窗骑,foo 會被解析為subnamespace\foo女责。
  • 完全限定名稱,或包含了全局前綴操作符的名稱创译,例如抵知, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在這種情況下软族,foo 總是被解析為代碼中的文字名(literal name)currentnamespace\foo刷喜。

下面是一個使用這三種方式的實(shí)例:
file1.php 文件代碼

namespace Foo\Bar\subnamespace; 

const FOO = 1;
function foo() {}
class foo
{
    static function staticmethod() {}
}

file2.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

注意訪問任意全局類立砸、函數(shù)或常量掖疮,都可以使用完全限定名稱,例如 \strlen() 或 \Exception 或 \INI_ALL颗祝。
在命名空間內(nèi)部訪問全局類浊闪、函數(shù)和常量:

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

namespace關(guān)鍵字和NAMESPACE常量

PHP支持兩種抽象的訪問當(dāng)前命名空間內(nèi)部元素的方法,NAMESPACE 魔術(shù)常量和namespace關(guān)鍵字螺戳。
常量NAMESPACE的值是包含當(dāng)前命名空間名稱的字符串搁宾。在全局的,不包括在任何命名空間中的代碼倔幼,它包含一個空的字符串盖腿。
常量 NAMESPACE 在動態(tài)創(chuàng)建名稱時很有用,例如:
使用NAMESPACE動態(tài)創(chuàng)建名稱

namespace MyProject;

function get($classname)
{
    $a = __NAMESPACE__ . '\\' . $classname;
    return new $a;
}

關(guān)鍵字 namespace 可用來顯式訪問當(dāng)前命名空間或子命名空間中的元素凤藏。它等價(jià)于類中的 self 操作符奸忽。
namespace操作符,命名空間中的代碼

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

別名/導(dǎo)入

PHP 命名空間支持 有兩種使用別名或?qū)敕绞剑簽轭惷Q使用別名揖庄,或?yàn)槊臻g名稱使用別名栗菜。注意PHP不支持導(dǎo)入函數(shù)或常量。
在PHP中蹄梢,別名是通過操作符 use 來實(shí)現(xiàn)的. 下面是一個使用所有可能的三種導(dǎo)入方式的例子:

  1. 使用use操作符導(dǎo)入/使用別名;
  2. 一行中包含多個use語句, 導(dǎo)入操作是在編譯執(zhí)行的疙筹,但動態(tài)的類名稱富俄、函數(shù)名稱或常量名稱則不是。
  3. 導(dǎo)入和動態(tài)名稱, 導(dǎo)入操作只影響非限定名稱和限定名稱而咆。完全限定名稱由于是確定的霍比,故不受導(dǎo)入的影響。
  4. 導(dǎo)入和完全限定名稱;

后備全局函數(shù)/常量

在一個命名空間中暴备,當(dāng) PHP 遇到一個非限定的類悠瞬、函數(shù)或常量名稱時,它使用不同的優(yōu)先策略來解析該名稱涯捻。類名稱總是解析到當(dāng)前命名空間中的名稱浅妆。因此在訪問系統(tǒng)內(nèi)部或不包含在命名空間中的類名稱時,必須使用完全限定名稱障癌,例如:

  1. 在命名空間中訪問全局類, 對于函數(shù)和常量來說凌外,如果當(dāng)前命名空間中不存在該函數(shù)或常量,PHP 會退而使用全局空間中的函數(shù)或常量涛浙。
  2. 命名空間中后備的全局函數(shù)/常量;

命名空間順序

自從有了命名空間之后康辑,最容易出錯的該是使用類的時候,這個類的尋找路徑是什么樣的了轿亮。
名稱解析遵循下列規(guī)則:

  1. 對完全限定名稱的函數(shù)疮薇,類和常量的調(diào)用在編譯時解析。例如 new \A\B 解析為類 A\B哀托。

  2. 所有的非限定名稱和限定名稱(非完全限定名稱)根據(jù)當(dāng)前的導(dǎo)入規(guī)則在編譯時進(jìn)行轉(zhuǎn)換惦辛。例如,如果命名空間 A\B\C 被導(dǎo)入為 C仓手,那么對 C\D\e() 的調(diào)用就會被轉(zhuǎn)換為 A\B\C\D\e()胖齐。

  3. 在命名空間內(nèi)部,所有的沒有根據(jù)導(dǎo)入規(guī)則轉(zhuǎn)換的限定名稱均會在其前面加上當(dāng)前的命名空間名稱嗽冒。例如呀伙,在命名空間 A\B 內(nèi)部調(diào)用C\D\e(),則 C\D\e() 會被轉(zhuǎn)換為 A\B\C\D\e() 添坊。

  4. 非限定類名根據(jù)當(dāng)前的導(dǎo)入規(guī)則在編譯時轉(zhuǎn)換(用全名代替短的導(dǎo)入名稱)剿另。例如,如果命名空間 A\B\C 導(dǎo)入為C贬蛙,則 new C() 被轉(zhuǎn)換為 *new A\B\C() *雨女。

  5. 在命名空間內(nèi)部(例如A\B),對非限定名稱的函數(shù)調(diào)用是在運(yùn)行時解析的阳准。例如對函數(shù) foo() 的調(diào)用是這樣解析的:在當(dāng)前命名空間中查找名為 A\B\foo() 的函數(shù)
    嘗試查找并調(diào)用 全局(global) 空間中的函數(shù) foo()氛堕。

  6. 在命名空間(例如A\B)內(nèi)部對非限定名稱或限定名稱類(非完全限定名稱)的調(diào)用是在運(yùn)行時解析的。下面是調(diào)用 new C()new D\E() 的解析過程: new C()的解析:

  • 在當(dāng)前命名空間中查找A\B\C類野蝇。
  • 嘗試自動裝載類A\B\C讼稚。

new D\E()的解析:

  • 在類名稱前面加上當(dāng)前命名空間名稱變成:A\B\D\E括儒,然后查找該類。
  • 嘗試自動裝載類 A\B\D\E锐想。

為了引用全局命名空間中的全局類帮寻,必須使用完全限定名稱 new \C()

namespace A;
use B\D, C\E as F;

// 函數(shù)調(diào)用
foo();      // 首先嘗試調(diào)用定義在命名空間"A"中的函數(shù)foo()
            // 再嘗試調(diào)用全局函數(shù) "foo"
\foo();     // 調(diào)用全局空間函數(shù) "foo" 
my\foo();   // 調(diào)用定義在命名空間"A\my"中函數(shù) "foo" 
F();        // 首先嘗試調(diào)用定義在命名空間"A"中的函數(shù) "F" 
            // 再嘗試調(diào)用全局函數(shù) "F"

// 類引用
new B();    // 創(chuàng)建命名空間 "A" 中定義的類 "B" 的一個對象
            // 如果未找到赠摇,則嘗試自動裝載類 "A\B"
new D();    // 使用導(dǎo)入規(guī)則固逗,創(chuàng)建命名空間 "B" 中定義的類 "D" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "B\D"
new F();    // 使用導(dǎo)入規(guī)則藕帜,創(chuàng)建命名空間 "C" 中定義的類 "E" 的一個對象
            // 如果未找到抒蚜,則嘗試自動裝載類 "C\E"
new \B();   // 創(chuàng)建定義在全局空間中的類 "B" 的一個對象
            // 如果未發(fā)現(xiàn),則嘗試自動裝載類 "B"
new \D();   // 創(chuàng)建定義在全局空間中的類 "D" 的一個對象
            // 如果未發(fā)現(xiàn)耘戚,則嘗試自動裝載類 "D"
new \F();   // 創(chuàng)建定義在全局空間中的類 "F" 的一個對象
            // 如果未發(fā)現(xiàn),則嘗試自動裝載類 "F"

// 調(diào)用另一個命名空間中的靜態(tài)方法或命名空間函數(shù)
B\foo();    // 調(diào)用命名空間 "A\B" 中函數(shù) "foo"
B::foo();   // 調(diào)用命名空間 "A" 中定義的類 "B" 的 "foo" 方法
            // 如果未找到類 "A\B" 操漠,則嘗試自動裝載類 "A\B"
D::foo();   // 使用導(dǎo)入規(guī)則收津,調(diào)用命名空間 "B" 中定義的類 "D" 的 "foo" 方法
            // 如果類 "B\D" 未找到,則嘗試自動裝載類 "B\D"
\B\foo();   // 調(diào)用命名空間 "B" 中的函數(shù) "foo" 
\B::foo();  // 調(diào)用全局空間中的類 "B" 的 "foo" 方法
            // 如果類 "B" 未找到浊伙,則嘗試自動裝載類 "B"

// 當(dāng)前命名空間中的靜態(tài)方法或函數(shù)
A\B::foo();   // 調(diào)用命名空間 "A\A" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\A\B" 未找到撞秋,則嘗試自動裝載類 "A\A\B"
\A\B::foo();  // 調(diào)用命名空間 "A\B" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\B" 未找到,則嘗試自動裝載類 "A\B"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚣鄙,一起剝皮案震驚了整個濱河市吻贿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哑子,老刑警劉巖舅列,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卧蜓,居然都是意外死亡帐要,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門弥奸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榨惠,“玉大人,你說我怎么就攤上這事盛霎≡龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵愤炸,是天一觀的道長期揪。 經(jīng)常有香客問我,道長摇幻,這世上最難降的妖魔是什么横侦? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任挥萌,我火速辦了婚禮,結(jié)果婚禮上枉侧,老公的妹妹穿的比我還像新娘引瀑。我一直安慰自己,他們只是感情好榨馁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布憨栽。 她就那樣靜靜地躺著,像睡著了一般翼虫。 火紅的嫁衣襯著肌膚如雪屑柔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天珍剑,我揣著相機(jī)與錄音掸宛,去河邊找鬼。 笑死招拙,一個胖子當(dāng)著我的面吹牛唧瘾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播别凤,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼饰序,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了规哪?” 一聲冷哼從身側(cè)響起求豫,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诉稍,沒想到半個月后蝠嘉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡均唉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年是晨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舔箭。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡罩缴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出层扶,到底是詐尸還是另有隱情箫章,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布镜会,位于F島的核電站檬寂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏戳表。R本人自食惡果不足惜桶至,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一昼伴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镣屹,春花似錦圃郊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伪窖,卻和暖如春逸寓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背覆山。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工竹伸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人簇宽。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓佩伤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晦毙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容