PHP學習之六 語言雜項

2021-06-07 09:59:28 字數 4379 閱讀 8361

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子句設定查詢條件,...