1.Hypertxt Processing:超文本預(yù)處理工具
2.用途:第一,服務(wù)端腳本。需要三部分,web服務(wù)器,web瀏覽器,PHP解釋器(CGI或服務(wù)器模 ? ? ? ? ? ? ? ? ? ? ? ? ?塊)。
? ? ? ? ? ? ?第二,命令行腳本。直接使用PHP解釋器。常用于cron(Linux)或Task Scheduler執(zhí)行日 ? ? ? ? ? ? ? ? ? ? ? 常腳本。
? ? ? ? ? ? ?第三,編寫桌面應(yīng)用程序。PHPGTK。
3.FPM(FastCGI 進(jìn)程管理器)用于替換 PHP FastCGI 的大部分附加功能,對于高負(fù)載網(wǎng)站是非常有用的。
? ? 特性: 第一,支持平滑的停止/啟動的高級進(jìn)程管理功能;
? ? ? ? ? ? ? ? 第二,可以工作于不同的 uid/gid/chroot 環(huán)境下,并監(jiān)聽不同的端口和使用不同的 php.ini 配置文件(可取代 safe_mode 的設(shè)置);
? ? ? ? ? ? ? ? 第三,發(fā)生意外情況的時候能夠重新啟動并緩存被破壞的 opcode;
? ? ? ? ? ? ? ? 第四,動態(tài)/靜態(tài)子進(jìn)程產(chǎn)生;
4.PECL :
? ? ? pear打包的PHP擴(kuò)展庫倉庫。擴(kuò)展庫名字是extname。
5.建立PECL共享庫:
? ? ? 法一,PEAR編譯共享庫,使用PECL命令。?
? ? ? 法二,phpize編譯。phpize是準(zhǔn)備php編譯環(huán)境的。
6.php-config
? ? ?是一個簡單的命令行腳本,用于獲取php配置信息
7.配置文件 php.ini
? ? ? php.ini在php啟動時讀取,對于服務(wù)器模塊的php,僅在web服務(wù)器啟動時讀取。而對于CGI和CLI模式下,每次調(diào)用都讀取。
8. 如果文件內(nèi)容是純 PHP 代碼,最好在文件末尾刪除 PHP 結(jié)束標(biāo)記。這可以避免在 PHP 結(jié)束標(biāo)記之后萬一意外加入了空格或者換行符,會導(dǎo)致 PHP 開始輸出這些空白,而腳本中此時并無輸出的意圖。
9.如果在HTML中嵌入PHP腳本
? ? ?要輸出大段文本時,跳出 PHP 解析模式通常比將文本通過echo或print輸出更有效率。
10.php變量類型:
? ? ?整型,布爾,浮點(diǎn),字符串四種標(biāo)量類型。
? ? ?array,object兩種復(fù)合類型。
? ? ?null,resource兩種資源類型。
? ? ?變量的類型通常不是由程序員設(shè)定的,確切地說,是由 PHP 根據(jù)該變量使用的上下文在運(yùn)行時決定的。
? ? ? 如果想查看某個表達(dá)式的值和類型,用var_dump()函數(shù)。
? ? ? ? 如果只是想得到一個易讀懂的類型的表達(dá)方式用于調(diào)試,用gettype()函數(shù)。要查看某個類型,不要用gettype(),而用is_type函數(shù)。
? ? ? ? ? 如果要將一個變量強(qiáng)制轉(zhuǎn)換為某類型,可以對其使用強(qiáng)制轉(zhuǎn)換或者settype()函數(shù)。
11.boolean
? ? ? 當(dāng)轉(zhuǎn)換為boolean時,以下值被認(rèn)為是FALSE:
? ? ? 布爾值FALSE本身
? ? ? ?整型值 0(零)
? ? ? ?浮點(diǎn)型值 0.0(零)
? ? ? ? 不包括任何元素的數(shù)組
? ? ? 不包括任何成員變量的對象(僅 PHP 4.0 適用)
? ? ? 特殊類型NULL(包括尚未賦值的變量)
? ? ? ? 從空標(biāo)記生成的SimpleXML對象
? ? ? 所有其它值都被認(rèn)為是TRUE(包括任何資源)。
12.Integer
? ? ? PHP_INT_SIZE:表示整數(shù)字長。
? ? ? PHP_INT_MAX:表示整數(shù)最大值。不同平臺值是不一樣的。
? ? ? 整數(shù)溢出:
? ? ? 如果給定的一個數(shù)超出了integer的范圍,將會被解釋為float。同樣如果執(zhí)行的運(yùn)算結(jié)果超出了integer范圍,也會返回float。
? ? ? ?當(dāng)從浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)時,將向下取整。round()四舍五入.
13.浮點(diǎn)數(shù)
? ? ? NaN
? ? ? 某些數(shù)學(xué)運(yùn)算會產(chǎn)生一個由常量NAN所代表的結(jié)果。此結(jié)果代表著一個在浮點(diǎn)數(shù)運(yùn)算中未定義或不可表述的值。任何拿此值與其它任何值進(jìn)行的松散或嚴(yán)格比較的結(jié)果都是FALSE。由于NAN代表著任何不同值,不應(yīng)拿NAN去和其它值進(jìn)行比較,包括其自身,應(yīng)該用is_nan()來檢查。
? ? ? 所以永遠(yuǎn)不要相信浮點(diǎn)數(shù)結(jié)果精確到了最后一位,也永遠(yuǎn)不要比較兩個浮點(diǎn)數(shù)是否相等。如果確實需要更高的精度,應(yīng)該使用任意精度數(shù)學(xué)函數(shù)或者gmp 函數(shù)。
14.字符串
? ? 1>表示方式:單引號,雙引號,heredoc,newdoc。
? ? 2>heredoc ,類似于雙引號字符串。結(jié)束時所引用的標(biāo)識符必須在該行的第一列,而且,標(biāo)識符的命名也要像其它標(biāo)簽一樣遵守 PHP 的規(guī)則:只能包含字母、數(shù)字和下劃線,并且必須以字母和下劃線作為開頭。?要注意的是結(jié)束標(biāo)識符這行除了可能有一個分號(;)外,絕對不能包含其它字符。這意味著標(biāo)識符不能縮進(jìn),分號的前后也不能有任何空白或制表符。更重要的是結(jié)束標(biāo)識符的前面必須是個被本地操作系統(tǒng)認(rèn)可的換行,而結(jié)束定界符(可能其后有個分號)之后也必須緊跟一個換行。
? ? 3>newdoc類似于單引號字符串。一個 nowdoc 結(jié)構(gòu)也用和 heredocs 結(jié)構(gòu)一樣的標(biāo)記<<<, 但是跟在后面的標(biāo)識符要用單引號括起來,即<<<'EOT'。Heredoc 結(jié)構(gòu)的所有規(guī)則也同樣適用于 nowdoc 結(jié)構(gòu),尤其是結(jié)束標(biāo)識符的規(guī)則。
? ? 4>用花括號{和}把它括起來即可。由于{無法被轉(zhuǎn)義,只有$緊挨著{時才會被識別
? ? 5>存取和修改字符串中的字符. ??string中的字符可以通過一個從 0 開始的下標(biāo),用類似array結(jié)構(gòu)中的方括號包含對應(yīng)的數(shù)字來訪問和修改,比如$str[42]??梢园?a target="_blank" rel="nofollow">string當(dāng)成字符組成的array。函數(shù)substr()和substr_replace()可用于操作多于一個字符的情況。Note:string也可用花括號訪問,比如$str{42}。
? ? ? ? ? 用超出字符串長度的下標(biāo)寫入將會拉長該字符串并以空格填充。非整數(shù)類型下標(biāo)會被轉(zhuǎn)換成整數(shù)。非法下標(biāo)類型會產(chǎn)生一個E_NOTICE級別錯誤。用負(fù)數(shù)下標(biāo)寫入字符串時會產(chǎn)生一個E_NOTICE級別錯誤,用負(fù)數(shù)下標(biāo)讀取字符串時返回空字符串。寫入時只用到了賦值字符串的第一個字符。用空字符串賦值則賦給的值是 NULL 字符。
? ? 6>一個值可以通過在其前面加上(string)或用strval()函數(shù)來轉(zhuǎn)變成字符串。
? ? ? ? 在一個需要字符串的表達(dá)式中,會自動轉(zhuǎn)換為string。比如在使用函數(shù)echo或print時,或在一個變量和一個string進(jìn)行比較時,就會發(fā)生這種轉(zhuǎn)換。
? ? ? ? ?一個布爾值boolean的TRUE被轉(zhuǎn)換成string的"1"。Boolean的FALSE被轉(zhuǎn)換成""(空字符串)
? ? ? ? ? 數(shù)組array總是轉(zhuǎn)換成字符串"Array"。NULL總是被轉(zhuǎn)變成空字符串。
? ? ? ? ?該字符串的開始部分決定了它的值。如果該字符串以合法的數(shù)值開始,則使用該數(shù)值。否則其值為 0(零)。合法數(shù)值由可選的正負(fù)號,后面跟著一個或多個數(shù)字(可能有小數(shù)點(diǎn)),再跟著可選的指數(shù)部分。指數(shù)部分由 'e' 或 'E' 后面跟著一個或多個數(shù)字構(gòu)成
7.數(shù)組
? ? 1>此外key會有如下的強(qiáng)制轉(zhuǎn)換:
? ? ? ?包含有合法整型值的字符串會被轉(zhuǎn)換為整型。例如鍵名"8"實際會被儲存為8。但是"08"則不會強(qiáng)制轉(zhuǎn)換,因為其不是一個合法的十進(jìn)制數(shù)值。
? ? ? ? 浮點(diǎn)數(shù)也會被轉(zhuǎn)換為整型,意味著其小數(shù)部分會被舍去。例如鍵名8.7實際會被儲存為8。
? ? ? ? 布爾值也會被轉(zhuǎn)換成整型。即鍵名true實際會被儲存為1而鍵名false會被儲存為0。
? ? ? ? Null會被轉(zhuǎn)換為空字符串,即鍵名null實際會被儲存為""。
? ? ? ? 數(shù)組和對象不能被用為鍵名。堅持這么做會導(dǎo)致警告:Illegal offset type。
? ? ? ? ?2>注意這里所使用的最大整數(shù)鍵名不一定當(dāng)前就在數(shù)組中。它只要在上次數(shù)組重新生成索引后曾經(jīng)存在過就行了。unset數(shù)組后索引并不從0開始。
? ? ? ? ? 3>轉(zhuǎn)為數(shù)組
? ? ? ? ? ? 對于任意integer,float,string,boolean和resource類型,如果將一個值轉(zhuǎn)換為數(shù)組,將得到一個僅有一個元素的數(shù)組,其下標(biāo)為 0,該元素即為此標(biāo)量的值。如果一個object類型轉(zhuǎn)換為array,則結(jié)果為一個數(shù)組,其單元為該對象的屬性。鍵名將為成員變量名,不過有幾點(diǎn)例外:整數(shù)屬性不可訪問;私有變量前會加上類名作前綴;保護(hù)變量前會加上一個 '*' 做前綴。這些前綴的前后都各有一個 NULL 字符。這會導(dǎo)致一些不可預(yù)知的行為。將NULL轉(zhuǎn)換為array會得到一個空的數(shù)組。?
? ? ? ? ? ? ?數(shù)組(Array)的賦值總是會涉及到值的拷貝。注意這點(diǎn)。
8.對象。
? ? ? ?如果將一個對象轉(zhuǎn)換成對象,它將不會有任何變化。如果其它任何類型的值被轉(zhuǎn)換成對象,將會創(chuàng)建一個內(nèi)置類stdClass的實例。如果該值為NULL,則新的實例為空。數(shù)組轉(zhuǎn)換成對象將使鍵名成為屬性名并具有相對應(yīng)的值。對于任何其它的值,名為scalar的成員變量將包含該值。
9.資源
? ? ? ? ?一種特殊變量,保存了到外部資源的一個引用。資源是通過專門的函數(shù)來建立和使用的。
? ? ? ? 轉(zhuǎn)換資源:由于資源類型變量保存有為打開文件、數(shù)據(jù)庫連接、圖形畫布區(qū)域等的特殊句柄,因此將其它類型的值轉(zhuǎn)換為資源沒有意義。
? ? ? ? 釋放資源:由于 PHP 4 Zend 引擎引進(jìn)了引用計數(shù)系統(tǒng),可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統(tǒng)釋放。因此,很少需要手工釋放內(nèi)存。
10.NULL
? ? ? ?使用(unset) $var將一個變量轉(zhuǎn)換為null將不會刪除該變量或 unset 其值。僅是返回NULL值而已。