1 關於引用的解釋
在php中,引用可以看作是與linux中的hardlink類似的東西,也叫別名,它與指標是不同的。不同的是php中的引用是可以複製的,如$a=&$b; $c=$a;
引用可以使得兩個變數指向對一塊內容,如$a = &$b;
引用可以傳遞變數,通過將乙個變數傳遞給函式,函式就可以修改其引數的值。只有變數和new語句才能通過引用傳遞,對於類變數預設都是按引用傳遞的。
<?php
function foo(&$var)
$a=5;
foo($a);
// $a is 6 here
?>
函式可以返回引用。
<?php
class foo
}$obj = new foo;
$myvalue = &$obj->getvalue(); // $myvalue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myvalue; // prints the new value of $obj->value, i.e. 2.
?>
取消引用需要unset被引用的變數即可,此時只是斷開所有引用,並不會清空變數的值。
2 預定義變數
$globals: 包含所有定義的全域性變數的資訊,鍵的key為
$_server
是乙個包含了諸如頭資訊(header)、路徑(path)、以及指令碼位置(script locations)等等資訊的陣列。這個陣列中的專案由 web 伺服器建立。不能保證每個伺服器都提供全部專案。此變數中包含以下元素:
argv 傳遞給指令碼的引數陣列,當以get方式呼叫時,傳遞的是查詢串。
argc 引數個數
gateway_inte***ce 伺服器使用cgi規範的版本,如cgi/1.1
server_addr 當前執行指令碼的伺服器的位址
server_name 當前執行指令碼的主機名。
server_software 伺服器標識串,在響應請求時頭資訊中給出
server_protocol 請求頁面時協議名稱與版本,如http/1.1
request_method 請求方法,如get/head/post/put等
request_time 請求開始的時間戳
query_string 通過頁面訪問時的查詢字串
document_root 當前執行指令碼所在的文件根目錄
http_accept 當前請求頭中accept項的內容
http_accept_charset 當前請求頭中accept-charset的內容
類似的變數還有:http_accept_encoding,http_accept_language,http_connection,http_host,http_referer,http_user_agent
https 若使用者通過https訪問的話,此變數非null
server_port www的服務埠
path_tranlated 當前指令碼所在檔案系統的絕對路徑
script_name 包含當前指令碼的路徑
path_info 由客戶端提供的,跟在指令碼名稱之後且在查詢語句之前的路徑資訊。例如: 被訪問,那麼 $_server['path_info']
將包含 /some/stuff
request_uri 用來指定要訪問的頁面,即主機名後面的部分
php_auth_user/pw php執行在apache或iis模組方式下需要用http認證的使用者名稱與密碼
$_get 通過url傳遞給當前指令碼的變數的陣列,其已經過urldecode()處理。
$_post 通過http post方法傳遞給當前指令碼的變數的陣列
$_file
$_request 預設情況下包含了$_get $_post和$_cookie的陣列
$_session
$_env 通過環境方式傳遞給當前指令碼的變數陣列
$_cookie 通過http cookie方式傳遞給當前指令碼的變數的陣列
$http_raw_post_data 包含post提交的原始資料
$argc 與$argv 包含當前執行於命令列下時傳遞給當前指令碼的引數的陣列
3 預定義異常
另乙個異常是errorexception 定義了錯誤異常,其用於描述異常的嚴重程度。
5 上下文選項
php提供了一些便利的在各種協議應用場景下的上下文選項,以方便我們使用。
5.1 socket上下文
bindto 以ip:port的形式提供,用於指示tcp等的連線位址
backlog 整數,表示listen的佇列大小
<?php
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),);$context = stream_context_create($opts);
$content = file_get_content('',false,$context);
echo $content;
?>
5.2 http上下文
此外php還支援ftp,ssl,curl等的上下文,具體可以參考文件。
6 協議封裝器
6.1 file://
用於訪問本地檔案系統,
php提供了一些io流以供訪問php自己的輸入和輸出流,如php://stdin php://stdout php://stderr,其允許在php程序中直接訪問各種流。流引用只是乙個複本。stdin為唯讀,dtdout與stderr為可寫的。
php://fd支援直接訪問指定的檔案描述符
php://memory 與php://temp 允許儲存臨時資料並以檔案的方式訪問之。
<?php
$file = fopen("php://stdout","rw");
fwrite($file,"hello world\n");
?>
此外還有其他的如ftp:// zlib:// ssh2:// rar:// ogg://等等。
PHP學習筆記(六)
array multisort 該函式可以用來排序多維陣列或一次排序多個陣列,對陣列中每乙個子陣列的第乙個元素按照常規公升序進行排序,可以使用sort asc或sort desc 指定公升序降序。示例如下 products array array tir tires 100 array otl oi...
PHP學習之路(六)
2017.08.23 24 day 6 週三 周四 晴 颱風 陣列就是乙個鍵值對組成的語言結構,鍵類似於酒店的房間號,值類似於酒店房間裡儲存的東西。如果你去某個酒店住店,服務員會告訴你房間號是多少,具體房間裡有儲存了什麼,那就需要根據房間號進到房間裡才知道了。下面的圖能更清晰的說明啥是陣列。知道陣列...
PHP學習筆記之SQL語言(九)
一 sql 語言簡介 sql structured query language 結構化查詢語言 主要用途是構造各種資料庫系統操作指令,如 select insert update delete sql命令可以分類以下三大類別 二 查詢 select 三 where子句 where子句設定查詢條件,...