- 相關(guān)推薦
PHP程序員基本知識(shí)點(diǎn)
PHP程序員有哪些必備知識(shí)點(diǎn)?下面是百分網(wǎng)小編精心為大家整理的PHP程序員的基本知識(shí)點(diǎn),希望對(duì)大家有幫助,更多內(nèi)容請(qǐng)關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!
1.1 HTTP協(xié)議中幾個(gè)狀態(tài)碼的含義:503 500 401 403 404 200 301 302。。。
200 : 請(qǐng)求成功,請(qǐng)求的數(shù)據(jù)隨之返回。
301 : 永久性重定向。
302 : 暫時(shí)行重定向。
401 : 當(dāng)前請(qǐng)求需要用戶(hù)驗(yàn)證。
403 : 服務(wù)器拒絕執(zhí)行請(qǐng)求,即沒(méi)有權(quán)限。
404 : 請(qǐng)求失敗,請(qǐng)求的數(shù)據(jù)在服務(wù)器上未發(fā)現(xiàn)。
500 : 服務(wù)器錯(cuò)誤。一般服務(wù)器端程序執(zhí)行錯(cuò)誤。
503 : 服務(wù)器臨時(shí)維護(hù)或過(guò)載。這個(gè)狀態(tài)時(shí)臨時(shí)性的。
1.2 Include require include_once require_once 的區(qū)別.
處理失敗方式不同:
require 失敗時(shí)會(huì)產(chǎn)生一個(gè)致命級(jí)別錯(cuò)誤,并停止程序運(yùn)行。
include 失敗時(shí)只產(chǎn)生一個(gè)警告級(jí)別錯(cuò)誤,程序繼續(xù)運(yùn)行。
include_once/require_once和include/require 處理錯(cuò)誤方式一樣,
唯一區(qū)別在于當(dāng)所包含的文件代碼已經(jīng)存在時(shí)候,不在包含。
1.3 PHP/Mysql中幾個(gè)版本的進(jìn)化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改進(jìn)等等。
1.4 HEREDOC介紹
一種定義字符串的方法。
結(jié)構(gòu):
<<<。在該提示符后面,要定義個(gè)標(biāo)識(shí)符(單獨(dú)一行),
然后是一個(gè)新行。接下來(lái)是字符串 本身,
最后要用前面定義的標(biāo)識(shí)符作為結(jié)束標(biāo)志(單獨(dú)一行)
注意:
標(biāo)識(shí)符的命名也要像其它標(biāo)簽一樣遵守PHP的規(guī)則:
只能包含字母、數(shù)字和下劃線,并且必須以字母和下劃線作為開(kāi)頭
1.5 寫(xiě)出一些php魔幻(術(shù))方法;
__construct() 實(shí)例化類(lèi)時(shí)自動(dòng)調(diào)用。
__destruct() 類(lèi)對(duì)象使用結(jié)束時(shí)自動(dòng)調(diào)用。
__set() 在給未定義的屬性賦值的時(shí)候調(diào)用。
__get() 調(diào)用未定義的屬性時(shí)候調(diào)用。
__isset() 使用isset()或empty()函數(shù)時(shí)候會(huì)調(diào)用。
__unset() 使用unset()時(shí)候會(huì)調(diào)用。
__sleep() 使用serialize序列化時(shí)候調(diào)用。
__wakeup() 使用unserialize反序列化的時(shí)候調(diào)用。
__call() 調(diào)用一個(gè)不存在的方法的時(shí)候調(diào)用。
__callStatic()調(diào)用一個(gè)不存在的靜態(tài)方法是調(diào)用。
__toString() 把對(duì)象轉(zhuǎn)換成字符串的時(shí)候會(huì)調(diào)用。比如 echo。
__invoke() 當(dāng)嘗試把對(duì)象當(dāng)方法調(diào)用時(shí)調(diào)用。
__set_state() 當(dāng)使用var_export()函數(shù)時(shí)候調(diào)用。接受一個(gè)數(shù)組參數(shù)。
__clone() 當(dāng)使用clone復(fù)制一個(gè)對(duì)象時(shí)候調(diào)用。
1.6 一些編譯php時(shí)的configure 參數(shù)
–prefix=/usr/local/php php安裝目錄
–with-config-file-path=/usr/local/php/etc 指定php.ini位置
–with-mysql=/usr/local/mysql mysql安裝目錄,對(duì)mysql的支持
–with-mysqli=/usr/local/mysql/bin/mysql_config mysqli文件目錄,優(yōu)化支持
–enable-safe-mode 打開(kāi)安全模式
–enable-ftp 打開(kāi)ftp的支持
–enable-zip 打開(kāi)對(duì)zip的支持
–with-bz2 打開(kāi)對(duì)bz2文件的支持
–with-jpeg-dir 打開(kāi)對(duì)jpeg圖片的支持
–with-png-dir 打開(kāi)對(duì)png圖片的支持
–with-freetype-dir 打開(kāi)對(duì)freetype字體庫(kù)的支持
–without-iconv關(guān)閉iconv函數(shù),種字符集間的轉(zhuǎn)換
–with-libxml-dir 打開(kāi)libxml2庫(kù)的支持
–with-xmlrpc 打開(kāi)xml-rpc的c語(yǔ)言
–with-zlib-dir 打開(kāi)zlib庫(kù)的支持
–with-gd 打開(kāi)gd庫(kù)的支持
更多可以使用 ./configure help 查看
1.7 向php傳入?yún)?shù)的三種方法。
方法一 使用$argc $argv
方法二 使用getopt函數(shù)()
方法三 提示用戶(hù)輸入,然后獲取輸入的參數(shù)。有點(diǎn)像C語(yǔ)言
1.8 (mysql)請(qǐng)寫(xiě)出數(shù)據(jù)類(lèi)型(int char varchar datetime text)的意思; 請(qǐng)問(wèn)varchar和char有什么區(qū)別;
int : 數(shù)值類(lèi)型
char : 固定長(zhǎng)度字符串類(lèi)型
varchar : 可變長(zhǎng)度字符串類(lèi)型
datetime : 時(shí)期時(shí)間類(lèi)型
text : 文本類(lèi)型
varchar和char有什么區(qū)別:
a. char 長(zhǎng)度是固定的,不管你存儲(chǔ)的數(shù)據(jù)是多少他都會(huì)都固定的長(zhǎng)度。
而varchar則處可變長(zhǎng)度但他要在總長(zhǎng)度上加1字符,這個(gè)用來(lái)存儲(chǔ)位置。
b. char 固定長(zhǎng)度,所以在處理速度上要比varchar快速很多,但是浪費(fèi)存儲(chǔ)空間,
所以對(duì)存儲(chǔ)不大,但在速度上有要求的可以使用char類(lèi)型,反之可以用varchar類(lèi)型來(lái)實(shí)例。
1.9 error_reporting 等調(diào)試函數(shù)使用
error_reporting() 函數(shù)能夠在運(yùn)行時(shí)設(shè)置php.ini中 error_reporting 指令。
所以可以再程序中隨時(shí)調(diào)節(jié)顯示的錯(cuò)誤級(jí)別。
使用此函數(shù)時(shí) display_errors必須是打開(kāi)狀態(tài)。
1.10 您是否用過(guò)版本控制軟件? 如果有您用的版本控制軟件的名字是?
1.11 posix和perl標(biāo)準(zhǔn)的正則表達(dá)式區(qū)別;
1.12 Safe_mode 打開(kāi)后哪些地方受限.
啟動(dòng)safe_mode,會(huì)對(duì)許多PHP函數(shù)進(jìn)行限制,特別是和系統(tǒng)相關(guān)的文件打開(kāi)、命令執(zhí)行等函數(shù).
所有操作文件的函數(shù)將只能操作與腳本UID相同的文件.
1.13 寫(xiě)代碼來(lái)解決多進(jìn)程/線程同時(shí)讀寫(xiě)一個(gè)文件的問(wèn)題。
PHP是不支持多線程的,可以使用php的flock加鎖函數(shù)實(shí)現(xiàn)。
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // 進(jìn)行排它型鎖定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 釋放鎖定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
1.14 寫(xiě)一段上傳文件的代碼。
upload.html
Send this file:
upload.php
$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 的存儲(chǔ)引擎,myisam和innodb的區(qū)別。
a. MyISAM類(lèi)型不支持事務(wù)處理等高級(jí)處理,而InnoDB類(lèi)型支持.
b. MyISAM類(lèi)型的表強(qiáng)調(diào)的是性能,其執(zhí)行數(shù)度比InnoDB類(lèi)型更快.
c. InnoDB不支持FULLTEXT類(lèi)型的索引.
d. InnoDB 中不保存表的具體行數(shù),也就是說(shuō),
執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來(lái)計(jì)算有多少行,
但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可.
e. 對(duì)于AUTO_INCREMENT類(lèi)型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引。
f. DELETE FROM table時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除。
g. LOAD TABLE FROM MASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導(dǎo)入數(shù)據(jù)后再改成InnoDB表,
但是對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用.
h. MyISAM支持表鎖,InnoDB支持行鎖。
【PHP程序員基本知識(shí)點(diǎn)】相關(guān)文章:
PHP程序員容易忽略的知識(shí)點(diǎn)01-10
PHP編程入門(mén)的基本語(yǔ)法知識(shí)點(diǎn)總結(jié)06-22
PHP程序員基本要求和必備技能06-28
php程序員05-02
PHP 基本簡(jiǎn)介05-12
PHP的基本作用02-22
PHP基本語(yǔ)法06-30