PHP程序員基本知識點

PHP程序員有哪些必備知識點?下面是本站小編精心爲大家整理的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支持行鎖。