PHP程式設計師有哪些必備知識點?下面是本站小編精心為大家整理的PHP程式設計師的基本知識點,希望對大家有幫助,更多內容請關注應屆畢業生網!
1.1 HTTP協議中幾個狀態碼的含義:503 500 401 403 404 200 301 302。。。
200 : 請求成功,請求的資料隨之返回。
301 : 永久性重定向。
302 : 暫時行重定向。
401 : 當前請求需要使用者驗證。
403 : 服務器拒絕執行請求,即沒有許可權。
404 : 請求失敗,請求的資料在伺服器上未發現。
500 : 伺服器錯誤。一般伺服器端程式執行錯誤。
503 : 伺服器臨時維護或過載。這個狀態時臨時性的。
1.2 Include require include_once require_once 的區別.
處理失敗方式不同:
require 失敗時會產生一個致命級別錯誤,並停止程式執行。
include 失敗時只產生一個警告級別錯誤,程式繼續執行。
include_once/require_once和include/require 處理錯誤方式一樣,
唯一區別在於當所包含的檔案程式碼已經存在時候,不在包含。
1.3 PHP/Mysql中幾個版本的進化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改進等等。
1.4 HEREDOC介紹
一種定義字串的方法。
結構:
<<<。在該提示符後面,要定義個識別符號(單獨一行),
然後是一個新行。接下來是字串 本身,
最後要用前面定義的識別符號作為結束標誌(單獨一行)
注意:
識別符號的命名也要像其它標籤一樣遵守PHP的規則:
只能包含字母、數字和下劃線,並且必須以字母和下劃線作為開頭
1.5 寫出一些php魔幻(術)方法;
__construct() 例項化類時自動呼叫。
__destruct() 類物件使用結束時自動呼叫。
__set() 在給未定義的屬性賦值的時候呼叫。
__get() 呼叫未定義的屬性時候呼叫。
__isset() 使用isset()或empty()函式時候會呼叫。
__unset() 使用unset()時候會呼叫。
__sleep() 使用serialize序列化時候呼叫。
__wakeup() 使用unserialize反序列化的時候呼叫。
__call() 呼叫一個不存在的方法的時候呼叫。
__callStatic()呼叫一個不存在的靜態方法是呼叫。
__toString() 把物件轉換成字串的時候會呼叫。比如 echo。
__invoke() 當嘗試把物件當方法呼叫時呼叫。
__set_state() 當使用var_export()函式時候呼叫。接受一個數組引數。
__clone() 當使用clone複製一個物件時候呼叫。
1.6 一些編譯php時的configure 引數
–prefix=/usr/local/php php安裝目錄
–with-config-file-path=/usr/local/php/etc 指定位置
–with-mysql=/usr/local/mysql mysql安裝目錄,對mysql的支援
–with-mysqli=/usr/local/mysql/bin/mysql_config mysqli檔案目錄,優化支援
–enable-safe-mode 開啟安全模式
–enable-ftp 開啟ftp的支援
–enable-zip 開啟對zip的支援
–with-bz2 開啟對bz2檔案的支援
–with-jpeg-dir 開啟對jpeg圖片的支援
–with-png-dir 開啟對png圖片的支援
–with-freetype-dir 開啟對freetype字型庫的支援
–without-iconv關閉iconv函式,種字符集間的轉換
–with-libxml-dir 開啟libxml2庫的支援
–with-xmlrpc 開啟xml-rpc的C語言
–with-zlib-dir 開啟zlib庫的支援
–with-gd 開啟gd庫的支援
更多可以使用 ./configure help 檢視
1.7 向php傳入引數的三種方法。
方法一 使用$argc $argv
方法二 使用getopt函式()
方法三 提示使用者輸入,然後獲取輸入的引數。有點像C語言
1.8 (mysql)請寫出資料型別(int char varchar datetime text)的意思; 請問varchar和char有什麼區別;
int : 數值型別
char : 固定長度字串型別
varchar : 可變長度字串型別
datetime : 時期時間型別
text : 文字型別
varchar和char有什麼區別:
a. char 長度是固定的,不管你儲存的資料是多少他都會都固定的長度。
而varchar則處可變長度但他要在總長度上加1字元,這個用來儲存位置。
b. char 固定長度,所以在處理速度上要比varchar快速很多,但是浪費儲存空間,
所以對儲存不大,但在速度上有要求的可以使用char型別,反之可以用varchar型別來例項。
1.9 error_reporting 等除錯函式使用
error_reporting() 函式能夠在執行時設定中 error_reporting 指令。
所以可以再程式中隨時調節顯示的錯誤級別。
使用此函式時 display_errors必須是開啟狀態。
1.10 您是否用過版本控制軟體? 如果有您用的版本控制軟體的名字是?
1.11 posix和perl標準的正則表示式區別;
1.12 Safe_mode 開啟後哪些地方受限.
啟動safe_mode,會對許多PHP函式進行限制,特別是和系統相關的檔案開啟、命令執行等函式.
所有操作文件的函式將只能操作與指令碼UID相同的檔案.
1.13 寫程式碼來解決多程序/執行緒同時讀寫一個檔案的問題。
PHP是不支援多執行緒的,可以使用php的flock加鎖函式實現。
$fp = fopen("/tmp/", "w+");
if (flock($fp, LOCK_EX)) { // 進行排它型鎖定
fwrite($fp, "Write something heren");
flock($fp, LOCK_UN); // 釋放鎖定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
1.14 寫一段上傳檔案的`程式碼。
Send this file:
$uploads_dir = '/uploads';
foreach ($_FILES["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["tmp_name"][$key];
$name = $_FILES["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
1.15 Mysql 的儲存引擎,myisam和innodb的區別。
a. MyISAM型別不支援事務處理等高階處理,而InnoDB型別支援.
b. MyISAM型別的表強調的是效能,其執行數度比InnoDB型別更快.
c. InnoDB不支援FULLTEXT型別的索引.
d. InnoDB 中不儲存表的具體行數,也就是說,
執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,
但是MyISAM只要簡單的讀出儲存好的行數即可.
e. 對於AUTO_INCREMENT型別的欄位,InnoDB中必須包含只有該欄位的索引,但是在MyISAM表中,可以和其他欄位一起建立聯合索引。
f. DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。
g. LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,匯入資料後再改成InnoDB表,
但是對於使用的額外的InnoDB特性(例如外來鍵)的表不適用.
h. MyISAM支援表鎖,InnoDB支援行鎖。