當前位置:才華齋>計算機>php語言>

PHP程式設計師基本知識點

php語言 閱讀(7.07K)

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支援行鎖。