今天我們參考php官方對php全域變數介紹來理解一下php全域變數一些用法與自己對它的一些思考吧,現在分享出來希望對各位同學有協助。
一、核心要點思考:
1. 哪些全域變數是到期的及如何處理?
如:unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);
2.哪些全域變數有命令列下是無效的?
3. htmlspecialchars()用法, 為什麼要用它?
4. $_REQUEST和 $_GET, $_POST,$_COOKIE的聯絡與區別?
5. 為什麼上傳了檔案但$_FILES變數不存在或為空白?
6. 全域變數的範圍?
7. 我想取得使用者的IP和瀏覽器的user_agent資訊, 如何取?
8. 我沒有用瀏覽器, 我是 socket編程? 如何保持session?
9. 如何取得headers資訊?
php九大全域預定義數組
超全域變數 — 超全域變數是在全部範圍中始終可用的內建變數
$GLOBALS — 引用全域範圍中可用的全部變數
$_SERVER — 伺服器和執行環境資訊
$_GET — HTTP GET 變數
$_POST — HTTP POST 變數
$_FILES — HTTP 檔案上傳變數
$_REQUEST — HTTP Request 變數
$_SESSION — Session 變數
$_ENV — 環境變數
$_COOKIE — HTTP Cookies
$php_errormsg — 前一個錯誤資訊
$HTTP_RAW_POST_DATA — 原生POST資料
$http_response_header — HTTP 回應標頭
$argc — 傳遞給指令碼的參數數目
$argv — 傳遞給指令碼的參數數組
二、主要問題
====================================
PHP基礎篇總結題目:
1>. var_dump(0=="ads");請問該條語句結果是怎樣的?為什嗎?
答:此語句結果為true;
此運算式中右側的字串預設強制轉換為int資料0,與左側資料相同,所以輸出true,如果是“===”,則會輸出false,這是因為他們類型不同,值也不同,在這裡不會強制轉換。
點評:這個真不好說, 測試一下吧! var_dump()列印運算式的結果! 這個實際考的是運算式運算。
2>.異常可以被複製嗎?
答:不可以。
3>.PHP中 Traits有什麼特性?
答:Traits (橫向重用/多重繼承)是一組結構很像類的方法,但它但不能執行個體化,它可以讓開發人員在不同的類中輕鬆地重用方法;
Traits的最佳應用是多類之間可以共用相同的函數;
靜態變數可以被 trait 的方法引用,但不能被 trait 定義。但是 trait 能夠為使用的類定義靜態方法;
如果 trait 定義了一個屬性,那類將不能定義同樣名稱的屬性,否則會產生一個錯誤;
總結: 提的問題好,回答的也挺好
=====================================
1、有哪些超全域變數?答:超全域變數:$GLOBALS、$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_SESSION、$_REQUEST、$_ENV
2、瀏覽器把cookie給禁用了,$_SESSION還能用嗎? 答:不能用了
點評: 答錯了, 能用! apache有自動的功能將session_id放在get參數。
3、$php_errormsg在什麼時候都可用嗎?答:不是,這個變數只在錯誤發生的範圍內可用,並且要求track_errors配置項是開啟的(預設是關閉的)。
總結: 很積極,回答能夠在豐滿一點比較好
========================================
有個人性化的面試問題
寫30個php字串函數。
例:
trim() 去掉字串中的空格
chop() 從右向左,刪除指定字元 ,參數 rtrim(string,find);
rtrim() 從右向左,刪除指定字元 ,參數 rtrim(string,find);
chr() 返回字元的 asc2 碼
var_dump() 列印一個值,可以是任何形式,並傳回值的屬性
print() 列印數組或字串
print_r() 把字串和數字簡單地列印出來,而數組則以括起來的鍵和值得列表形式顯示
chunk_split() 把字串分割為一連串更小的部分
implode() 把數組元素組合為一個字串
join() 把數組元素組合為一個字串
explode() 把字串分割成數組
md5() 返回一個md5值,無法復原
strlen() 擷取一個字串的長度
str_replace 替換字串中的一些字元
mb_substr mb擴充的截取字串函數,格式:mb_substr(string,start_Num,end_Num,'utf-8')
str_split 將一個字串按照字元間距分割為一個數組
strpos 尋找並返回首個匹配項的位置
strtr 轉換字串中特定的字元
substr 對字串進行截取
substr_count 計算字串中某字元段的出現次數
substr_replace 對字串中的部分字元進行替換
wordwrap 函數按照指定長度對字串進行折行處理
addcslashes() 在指定的字元前添加反斜線
strtolower() 把字串轉換為小寫
strtoupper() 把字串轉換為大寫
strrev() 反轉字串
strripos() 尋找字串在另一字串中最後出現的位置(大小寫不敏感)
strrpos() 尋找字串在另一字串中最後出現的位置(大小寫敏感)
strspn() 返回在字串中包含的特定字元的數目
ucwords() 把字串中每個單詞的首字元轉換為大寫
str_repeat() 把字串重複指定的次數
...
=======================================
1、命名空間必須是程式指令碼的第一條語句嗎?
答案:yes
2、如何取值 (Dereference)?
答案:unset();
3、如果一個類,它裡面至少有一個方法是被聲明為抽象的,那麼這個類就必須被聲明為抽象類別嗎?繼承一個抽象類別的時候,子類必須定義父類中的所有抽象方法嗎?
答案:如果一個類中有抽象方法,類必須定義為抽象類別,繼承一個抽象類別時,子類必須定義父類中的所有抽象方法。
========================================
1.如何得到檔案的絕對路徑
使用realpath() 函數,返回絕對路徑名。若失敗,則返回 false,比如說檔案不存在。
echo realpath("test.txt");
輸出:
C:wwwtestwebtest.txt
2.session的工作原理
session儲存在服務端,但會以cookie的形式儲存在用戶端一個sessionid,如果禁用cookie,就需要用get方法的URL重寫的機制或使用POST方法提交隱藏表單的形式來實現。
點評: 是這個原理, 但一般有web伺服器會自動完成這個功能, 不需要在程式中添加。
3.public static聲明的函數是靜態方法嗎?
public static聲明的函數是靜態方法,可以直接在類外用,類名::函數名的方法調用 不用採用NEW聲明的方式
注意:函數內不能有動態內容 如$this->之類的
一般來說 需要頻繁執行的內容 用STATIC聲明
總結: session的工作原理整理的很好,分析很透徹。希望以後積極點,繼續努力
http://www.bkjia.com/PHPjc/632673.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632673.htmlTechArticle今天我們參考php官方對php全域變數介紹來理解一下php全域變數一些用法與自己對它的一些思考吧,現在分享出來希望對各位同學有協助。 一...