版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章初識(shí)PHP《PHP網(wǎng)站開(kāi)發(fā)實(shí)例教程(第3版)》學(xué)習(xí)目標(biāo)/Target
熟悉PHP的概念,能夠描述PHP的作用。
熟悉PHP的特點(diǎn),能夠歸納PHP的5個(gè)特點(diǎn)。
熟悉網(wǎng)站的概念,能夠說(shuō)出網(wǎng)站發(fā)展經(jīng)歷的3個(gè)時(shí)代。
熟悉網(wǎng)站的訪問(wèn),能夠說(shuō)出網(wǎng)站的訪問(wèn)流程。
掌握VisualStudioCode的安裝,能夠獨(dú)立安裝和配置VisualStudioCode。學(xué)習(xí)目標(biāo)/Target
掌握ApacheHTTPServer的安裝,能夠獨(dú)立安裝和配置ApacheHTTPServer。
掌握PHP的安裝,能夠獨(dú)立安裝和配置PHP。
掌握虛擬主機(jī)的配置,能夠根據(jù)需求配置虛擬主機(jī)。
掌握訪問(wèn)權(quán)限的設(shè)置,能夠根據(jù)需求設(shè)置虛擬主機(jī)的訪問(wèn)權(quán)限。章節(jié)概述/SummaryPHP自發(fā)布以來(lái),因其能夠快速開(kāi)發(fā)Web應(yīng)用,具有豐富的函數(shù)并且開(kāi)放源代碼,故在Web應(yīng)用開(kāi)發(fā)中迅速占據(jù)了重要位置。為了使讀者對(duì)PHP有初步的認(rèn)識(shí),本章將對(duì)PHP和網(wǎng)站的概念、VisualStudioCode編輯器的安裝、開(kāi)發(fā)環(huán)境的搭建和Web服務(wù)器的配置進(jìn)行詳細(xì)講解。目錄/Contents1.11.21.3PHP簡(jiǎn)介網(wǎng)站簡(jiǎn)介搭建開(kāi)發(fā)環(huán)境1.4配置Web服務(wù)器PHP簡(jiǎn)介1.1
先定一個(gè)小目標(biāo)!熟悉PHP的概念,能夠描述什么是PHP。1.1.1PHP概述PHP是一種跨平臺(tái)、開(kāi)源、免費(fèi)的腳本語(yǔ)言,其語(yǔ)法風(fēng)格融合了C、Java和Perl的特點(diǎn)。PHP語(yǔ)法簡(jiǎn)單、易學(xué),對(duì)初學(xué)者而言,可以快速入門。1.1.1PHP概述表單解釋器PHP/FIPHP7、PHP8PHP8為了展示個(gè)人履歷和統(tǒng)計(jì)網(wǎng)頁(yè)流量編寫(xiě)的表單解釋器提供更好的性能和更低的內(nèi)存消耗,性能顯著提升使用C語(yǔ)言重新編寫(xiě)表單解釋器,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)1.1.1PHP概述010203123由Windows、ApacheHTTPServer、MySQL以及PHP組成WAMP環(huán)境LAMP環(huán)境LNMP環(huán)境PHP常見(jiàn)的運(yùn)行環(huán)境:由Linux、ApacheHTTPServer、MySQL以及PHP組成由Linux
、Nginx、MySQL以及PHP組成1.1.1PHP概述
先定一個(gè)小目標(biāo)!熟悉PHP的特點(diǎn),能夠歸納PHP的5個(gè)特點(diǎn)。1.1.2PHP的特點(diǎn)1.1.2PHP的特點(diǎn)開(kāi)源免費(fèi)跨平臺(tái)性面向?qū)ο笾С侄喾N數(shù)據(jù)庫(kù)快捷性PHP是開(kāi)源軟件,且擁有龐大的開(kāi)源社區(qū)支持,開(kāi)發(fā)者可以免費(fèi)使用PHP的跨平臺(tái)性很好,方便移植,在Linux平臺(tái)和Windows平臺(tái)上都可以運(yùn)行隨著PHP版本的更新,PHP面向?qū)ο缶幊逃辛孙@著改進(jìn),能更好支持大型項(xiàng)目開(kāi)發(fā)PHP支持ODBC,使用PHP可以連接任何支持ODBC的數(shù)據(jù)庫(kù),如MySQL、Oracle、SQLServer和DB2等PHP中可以嵌入HTML,編輯簡(jiǎn)單、實(shí)用性強(qiáng)、程序開(kāi)發(fā)快網(wǎng)站簡(jiǎn)介1.2
先定一個(gè)小目標(biāo)!熟悉網(wǎng)站的概念,能夠說(shuō)出網(wǎng)站發(fā)展經(jīng)歷的3個(gè)時(shí)代。1.2.1網(wǎng)站概述1.2.1網(wǎng)站概述網(wǎng)站(Website)是指在因特網(wǎng)上根據(jù)一定的規(guī)則,使用超文本標(biāo)記語(yǔ)言(HyperTextMarkupLanguage,HTML)制作的用于展示特定內(nèi)容的相關(guān)網(wǎng)頁(yè)集合。常見(jiàn)的網(wǎng)站類型有新聞、視頻、購(gòu)物、微博、論壇等。1.2.1網(wǎng)站概述網(wǎng)站的發(fā)展經(jīng)歷的3個(gè)時(shí)代:Web2.0時(shí)代也稱為用戶交互時(shí)代,以用戶為核心。網(wǎng)站根據(jù)用戶的選擇和需求,將數(shù)據(jù)動(dòng)態(tài)展示給用戶,被稱為動(dòng)態(tài)網(wǎng)站。后端語(yǔ)言用于對(duì)后臺(tái)邏輯和數(shù)據(jù)進(jìn)行處理。Web1.0時(shí)代也稱為數(shù)據(jù)展示時(shí)代,以數(shù)據(jù)為核心。網(wǎng)站主要展示信息,和用戶沒(méi)有交互,被稱為靜態(tài)網(wǎng)站。靜態(tài)網(wǎng)站通過(guò)HTML、CSS和JavaScript搭建。Web3.0時(shí)代以用戶為主導(dǎo)。系統(tǒng)更加智能,自動(dòng)匹配用戶所需要的數(shù)據(jù)。如大數(shù)據(jù)、人工智能。
先定一個(gè)小目標(biāo)!熟悉網(wǎng)站的訪問(wèn),能夠說(shuō)出網(wǎng)站的訪問(wèn)流程。1.2.2網(wǎng)站的訪問(wèn)1.2.2網(wǎng)站的訪問(wèn)網(wǎng)站的訪問(wèn)流程:輸入網(wǎng)站地址訪問(wèn)服務(wù)器中的某個(gè)資源通過(guò)超文本傳輸協(xié)議或超文本傳輸安全協(xié)議返回給用戶用戶在瀏覽器的地址欄中輸入的訪問(wèn)地址稱為統(tǒng)一資源定位符(URL)。服務(wù)器中每個(gè)資源都有URL,用于標(biāo)識(shí)它的位置,通過(guò)URL可以快速訪問(wèn)某個(gè)資源。URL的組成:1.2.2網(wǎng)站的訪問(wèn)在網(wǎng)絡(luò)中傳輸數(shù)據(jù)的協(xié)議,常見(jiàn)的有HTTP或HTTPS網(wǎng)絡(luò)協(xié)議://主機(jī)地址:端口資源路徑?參數(shù)主機(jī)地址:網(wǎng)站服務(wù)器的訪問(wèn)地址,可以通過(guò)IP地址或域名訪問(wèn)端口:訪問(wèn)服務(wù)器的端口,HTTP默認(rèn)端口80,HTTPS默認(rèn)端口443資源路徑:服務(wù)器中的資源對(duì)應(yīng)的路徑參數(shù):瀏覽器提供的參數(shù)信息,形式是“名字=值”,多個(gè)參數(shù)使用“&”分隔搭建開(kāi)發(fā)環(huán)境1.3
先定一個(gè)小目標(biāo)!掌握VisualStudioCode的安裝,能夠獨(dú)立安裝和配置VisualStudioCode。1.3.1安裝VisualStudioCodeVisualStudioCode(簡(jiǎn)稱VSCode)是由微軟開(kāi)發(fā)的一款代碼編輯器,具有免費(fèi)、開(kāi)源、輕量級(jí)、高性能、跨平臺(tái)等特點(diǎn)。下面講解如何下載、安裝和使用VSCode編輯器。1.3.1安裝VisualStudioCode①打開(kāi)瀏覽器,訪問(wèn)VSCode編輯器的官方網(wǎng)站:1.3.1安裝VisualStudioCode單擊該按鈕,會(huì)自動(dòng)識(shí)別當(dāng)前的操作系統(tǒng)并下載相應(yīng)的安裝包單擊該按鈕,可以下載其他系統(tǒng)的安裝包②查看其他系統(tǒng)版本的下載:1.3.1安裝VisualStudioCode③下載VSCode編輯器的安裝包后,在下載目錄中找到該安裝包:1.3.1安裝VisualStudioCode雙擊安裝包,啟動(dòng)安裝程序,按照程序提示操作安裝VSCode④啟動(dòng)VSCode編輯器,進(jìn)入VSCode編輯器的初始界面:1.3.1安裝VisualStudioCode⑤將VSCode編輯器切換為中文:1.3.1安裝VisualStudioCode⑥重新啟動(dòng)VSCode編輯器,中文語(yǔ)言擴(kuò)展才生效。VSCode編輯器的中文界面:1.3.1安裝VisualStudioCode⑦創(chuàng)建D:\www文件夾作為項(xiàng)目的根目錄,在VSCode打開(kāi)D:\www文件夾,在該文件夾中創(chuàng)建index.html,index.html在編輯器的顯示效果:1.3.1安裝VisualStudioCode
先定一個(gè)小目標(biāo)!掌握ApacheHTTPServer的安裝,能夠獨(dú)立安裝和配置ApacheHTTPServer。1.3.2安裝ApacheHTTPServerApacheHTTPServer(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)發(fā)布的一款Web服務(wù)器軟件,因其具有開(kāi)源、跨平臺(tái)和高安全性的特點(diǎn)而被廣泛使用。下面講解如何安裝Apache。1.3.2安裝ApacheHTTPServerApache的安裝步驟:1.3.2安裝ApacheHTTPServer獲取Apache準(zhǔn)備工作解壓與配置安裝Apache服務(wù)啟動(dòng)Apache服務(wù)123451.獲取Apache通常通過(guò)官方網(wǎng)站獲取軟件包,但Apache官方網(wǎng)站只提供源代碼,源代碼不能直接安裝,需要先手動(dòng)編譯才能安裝。手動(dòng)編譯比較麻煩,選擇從第三方網(wǎng)站獲取編譯好的Apache軟件包。在Apache官方網(wǎng)站中,找到適用于Windows系統(tǒng)的第三方編譯版本的超鏈接:1.3.2安裝ApacheHTTPServer提供的是Apache、MySQL、PHP等軟件的集成包單獨(dú)安裝Apache使用這兩個(gè)網(wǎng)站提供的軟件包1.獲取Apache以ApacheLounge網(wǎng)站為例,從該網(wǎng)站獲取軟件包:1.3.2安裝ApacheHTTPServer注意:Apache軟件包使用MicrosoftVisualC++2017進(jìn)行編譯,在安裝Apache前需要先安裝MicrosoftVisualC++2017運(yùn)行庫(kù)。1.3.2安裝ApacheHTTPServer2.準(zhǔn)備工作在C盤根目錄下創(chuàng)建一個(gè)名稱為web的文件夾,作為開(kāi)發(fā)環(huán)境的安裝位置,并在web文件夾中創(chuàng)建apache2.4子文件夾,用于存放Apache的文件。1.3.2安裝ApacheHTTPServer3.解壓與配置①將httpd-2.4.55-win64-VS17.zip中Apache24目錄下的文件解壓到C:\web\apache2.4中。解壓后的Apache目錄結(jié)構(gòu):1.3.2安裝ApacheHTTPServerbin是Apache的應(yīng)用程序所在的目錄conf是配置文件目錄htdocs是默認(rèn)的網(wǎng)站根目錄modules是Apache的動(dòng)態(tài)加載模塊所在的目錄3.解壓與配置②配置服務(wù)器根目錄。使用VSCode編輯器打開(kāi)Apache的配置文件conf\httpd.conf,找到第37行配置并修改:1.3.2安裝ApacheHTTPServerDefineSRVROOT"C:/web/apache2.4"③配置服務(wù)器域名。在VSCode編輯器中按“Ctrl+F”組合鍵搜索ServerName,修改配置:ServerName:80多學(xué)一招:Apache的常用配置項(xiàng)Apache的常用配置項(xiàng)配置項(xiàng)說(shuō)明ServerRoot"${SRVROOT}"服務(wù)器的根目錄Listen80服務(wù)器監(jiān)聽(tīng)的端口號(hào),例如80、8080LoadModule需要加載的模塊ServerAdminadmin@服務(wù)器管理員的郵箱地址ServerName:80服務(wù)器的域名DocumentRoot"${SRVROOT}/htdocs"網(wǎng)站根目錄ErrorLog"logs/error.log"用于記錄錯(cuò)誤日志4.安裝Apache服務(wù)①在命令提示符窗口中,切換到Apache的bin目錄:1.3.2安裝ApacheHTTPServercdC:/web/apache2.4/bin②安裝Apache服務(wù)的命令:httpd-kinstall-nApache2.4httpd表示Apache的服務(wù)程序httpd.exe-kinstall表示將Apache安裝為Windows系統(tǒng)的服務(wù)-nApache2.4表示將Apache服務(wù)的名稱設(shè)置為Apache2.4Apache服務(wù)的安裝結(jié)果:1.3.2安裝ApacheHTTPServer卸載Apache服務(wù)的命令:httpd-kuninstall-nApache2.45.啟動(dòng)Apache服務(wù)Apache的服務(wù)監(jiān)視工具ApacheServiceMonitor,用于管理Apache服務(wù)的啟動(dòng)和停止。該工具即bin目錄下的ApacheMonitor.exe,通過(guò)它可以啟動(dòng)和停止Apache服務(wù)。1.3.2安裝ApacheHTTPServer啟動(dòng)Apache服務(wù)后,通過(guò)瀏覽器訪問(wèn)http://localhost,運(yùn)行結(jié)果:1.3.2安裝ApacheHTTPServer“Itworks!”是htdocs/index.html的運(yùn)行結(jié)果
先定一個(gè)小目標(biāo)!掌握PHP的安裝,能夠獨(dú)立安裝和配置PHP。1.3.3安裝PHP若要解析和執(zhí)行PHP腳本,需要先安裝PHP軟件。PHP既可以獨(dú)立運(yùn)行,也可以作為Apache的模塊運(yùn)行。下面講解如何將PHP安裝為Apache的模塊。1.3.3安裝PHPPHP的安裝步驟:獲取PHP準(zhǔn)備工作解壓與配置在Apache中引入PHP模塊12341.3.3安裝PHP重新啟動(dòng)Apache服務(wù)器測(cè)試PHP模塊是否安裝成功67配置索引頁(yè)51.獲取PHPPHP提供了ThreadSafe(線程安全)與NonThreadSafe(非線程安全)兩種軟件包,在與Apache搭配使用時(shí),應(yīng)選擇ThreadSafe軟件包。在下載頁(yè)面中找到php-8.2.3-Win32-vs16-x64.zip軟件包并下載。1.3.3安裝PHP2.準(zhǔn)備工作在C盤的web目錄中創(chuàng)建php8.2文件夾,將PHP安裝到此文件夾中進(jìn)行管理。3.解壓與配置①解壓下載的PHP軟件包,解壓后的文件保存到C:\web\php8.2目錄中。1.3.3安裝PHPext是PHP擴(kuò)展文件所在的目錄php.exe是PHP的命令行應(yīng)用程序php8apache2_4.dll是Apache的DLL模塊3.解壓與配置②復(fù)制php.ini-development文件,將復(fù)制而來(lái)的文件重命名為php.ini,作為PHP的配置文件。③配置PHP擴(kuò)展的目錄,在配置文件中搜索文本extension_dir,修改配置:1.3.3安裝PHPextension_dir="C:/web/php8.2/ext"④配置PHP時(shí)區(qū),搜索文本date.timezone,修改配置:date.timezone=PRC4.在Apache中引入PHP模塊在httpd.conf第186行(前面有一些LoadModule配置)的位置引入PHP模塊:1.3.3安裝PHPLoadModulephp_module"C:/web/php8.2/php8apache2_4.dll"<FilesMatch"\.php$">setHandlerapplication/x-httpd-php</FilesMatch>PHPIniDir"C:/web/php8.2"LoadFile"C:/web/php8.2/libssh2.dll"將PHP作為Apache模塊加載加載PHP安裝目錄中的libssh2.dll文件,確保PHP的cURL擴(kuò)展能夠正確加載指定php.ini所在的目錄匹配以.php為擴(kuò)展名的文件,將其交給PHP來(lái)處理5.配置索引頁(yè)在Apache配置文件httpd.conf中搜索DirectoryIndex,修改配置:1.3.3安裝PHP<IfModuledir_module>DirectoryIndexindex.htmlindex.php</IfModule>6.重新啟動(dòng)Apache服務(wù)器修改Apache配置文件后,單擊Windows系統(tǒng)任務(wù)欄中的Apache服務(wù)器圖標(biāo),選擇Apache2.4,單擊Restart重新啟動(dòng)Apache服務(wù)。7.測(cè)試PHP模塊是否安裝成功htdocs目錄中創(chuàng)建test.php文件:1.3.3安裝PHP<?phpphpinfo();?>配置Web服務(wù)器1.4
先定一個(gè)小目標(biāo)!掌握虛擬主機(jī)的配置,能夠根據(jù)需求配置虛擬主機(jī)。1.4.1配置虛擬主機(jī)為什么配置虛擬主機(jī)?虛擬主機(jī)用來(lái)做什么?1.4.1配置虛擬主機(jī)實(shí)際開(kāi)發(fā)中,可能會(huì)同時(shí)開(kāi)發(fā)多個(gè)項(xiàng)目,為了同時(shí)管理多個(gè)項(xiàng)目,需要配置虛擬主機(jī)。虛擬主機(jī)能夠?qū)崿F(xiàn)在一臺(tái)服務(wù)器中管理多個(gè)項(xiàng)目,每個(gè)項(xiàng)目都有獨(dú)立的域名和目錄。在Apache服務(wù)器中配置多個(gè)虛擬主機(jī),可以實(shí)現(xiàn)通過(guò)域名訪問(wèn)指定項(xiàng)目。1.4.1配置虛擬主機(jī)1.解析域名在Windows系統(tǒng)中以管理員身份打開(kāi)命令提示符窗口,在命令提示符窗口中使用記事本打開(kāi)hosts文件,具體命令如下:notepadC:\Windows\System32\drivers\etc\hostswww.php.test在hosts文件中配置IP地址和域名的映射關(guān)系:1.4.1配置虛擬主機(jī)2.配置虛擬主機(jī)Includeconf/extra/httpd-vhosts.conf在httpd.conf中搜索httpd-vhosts,刪除“#”
:1.4.1配置虛擬主機(jī)步驟2步驟1步驟3啟用虛擬主機(jī)配置文件2.配置虛擬主機(jī)<VirtualHost*:80>DocumentRoot"C:/web/apache2.4/htdocs"ServerNamelocalhost</VirtualHost><VirtualHost*:80>DocumentRoot"C:/web/apache2.4/htdocs/www.php.test"ServerNamewww.php.test</VirtualHost>在httpd-vhosts.conf添加localhost和www.php.test虛擬主機(jī):1.4.1配置虛擬主機(jī)步驟2步驟1步驟3配置虛擬主機(jī)2.配置虛擬主機(jī)Welcomewww.php.test重啟Apache,創(chuàng)建htdocs\www.php.test\index.html:1.4.1配置虛擬主機(jī)步驟2步驟1步驟3訪問(wèn)虛擬主機(jī)
先定一個(gè)小目標(biāo)!掌握訪問(wèn)權(quán)限的設(shè)置,能夠根據(jù)需求設(shè)置虛擬主機(jī)的訪問(wèn)權(quán)限。1.4.2設(shè)置目錄訪問(wèn)權(quán)限在Apache中,可以使用指令來(lái)設(shè)置目錄的權(quán)限,常用的目錄指令:指令作用常見(jiàn)可選值A(chǔ)llowOverride指定是否允許讀取分布式配置文件None:不允許讀取分布式配置文件All:允許讀取分布式配置文件Require指定訪問(wèn)目錄的權(quán)限allgranted:允許所有訪問(wèn)alldenied:阻止所有訪問(wèn)local:允許本地訪問(wèn)Options指定目錄的選項(xiàng)和功能Indexes:目錄瀏覽功能FollowSymLinks:使用符號(hào)鏈接1.4.2設(shè)置目錄訪問(wèn)權(quán)限設(shè)置目錄訪問(wèn)權(quán)限的兩種方式:設(shè)置目錄訪問(wèn)權(quán)限通過(guò)httpd.conf配置文件進(jìn)行設(shè)置通過(guò)分布式配置文件進(jìn)行設(shè)置1.4.2設(shè)置目錄訪問(wèn)權(quán)限1.通過(guò)httpd.conf配置文件進(jìn)行設(shè)置httpd.conf中默認(rèn)添加根目錄和htdocs目錄的配置。根目錄的配置<Directory/>AllowOverrideNoneRequirealldenied</Directory>htdocs目錄的配置<Directory"${SRVROOT}/htdocs">OptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgranted</Directory>禁止讀取分布式配置文件,阻止所有訪問(wèn)啟用目錄瀏覽功能,允許使用符號(hào)鏈接,允許所有訪問(wèn)1.4.2設(shè)置目錄訪問(wèn)權(quán)限啟用目錄瀏覽功能時(shí),如果用戶訪問(wèn)的目錄中沒(méi)有默認(rèn)索引頁(yè)(如index.html、index.php),就會(huì)顯示文件列表。啟用目錄瀏覽功能可方便查看服務(wù)器上的文件,但是服務(wù)器上的重要文件也可以被隨意訪問(wèn),降低服務(wù)器的安全性。1.4.2設(shè)置目錄訪問(wèn)權(quán)限2.通過(guò)分布式配置文件進(jìn)行設(shè)置分布式配置文件是指分布在每個(gè)目錄下的配置文件,文件擴(kuò)展名為.htaccess。Apache在讀取分布式配置文件時(shí),會(huì)從磁盤根目錄一直查找到當(dāng)前訪問(wèn)的目錄,如果當(dāng)前訪問(wèn)的目錄下有.htaccess文件就會(huì)讀取。子目錄的配置文件會(huì)覆蓋父級(jí)目錄的配置文件。分布式配置文件的優(yōu)缺點(diǎn):不需要重啟Apache服務(wù)器配置就能生效增加服務(wù)器的負(fù)擔(dān),降低服務(wù)器的性能1.4.2設(shè)置目錄訪問(wèn)權(quán)限
先定一個(gè)小目標(biāo)!掌握虛擬主機(jī)的配置,能夠根據(jù)案例需求配置虛擬主機(jī)。1.4.3【案例】根據(jù)需求配置虛擬主機(jī)配置域名為www.admin.test的虛擬主機(jī),站點(diǎn)目錄為C:\web\www\www.admin.test,關(guān)閉目錄瀏覽功能,開(kāi)啟分布式配置文件,只允許本地訪問(wèn)。
案例需求1.4.3【案例】根據(jù)需求配置虛擬主機(jī)①在hosts文件中配置IP地址和域名的映射關(guān)系,虛擬主機(jī)www.admin.test映射的IP地址是。②在httpd-vhost.conf文件中配置虛擬主機(jī)www.admin.test,使用Options-Indexes關(guān)閉目錄瀏覽功能,使用AllowOverrideAll配置項(xiàng)開(kāi)啟分布式配置文件,使用Requirelocal配置項(xiàng)允許本地訪問(wèn)。③創(chuàng)建C:\web\www\www.admin.test\index.html文件,通過(guò)瀏覽器訪問(wèn)該文件,查看虛擬主機(jī)是否配置正確。
1.4.3【案例】根據(jù)需求配置虛擬主機(jī)實(shí)現(xiàn)思路本章小結(jié)本章首先講解了PHP和網(wǎng)站的相關(guān)知識(shí);然后講解了開(kāi)發(fā)環(huán)境的搭建,主要包括VSCode編輯器的安裝、Apache和PHP的安裝;最后講解了如何配置Web服務(wù)器,主要包括配置虛擬主機(jī)和設(shè)置目錄訪問(wèn)權(quán)限,并通過(guò)案例展示了如何根據(jù)需求配置虛擬主機(jī)。通過(guò)對(duì)本章的學(xué)習(xí),讀者能夠?qū)HP有初步的認(rèn)識(shí),并能掌握如何搭建開(kāi)發(fā)環(huán)境和配置Web服務(wù)器。本章小結(jié)第2章PHP語(yǔ)法基礎(chǔ)《PHP網(wǎng)站開(kāi)發(fā)實(shí)例教程(第3版)》學(xué)習(xí)目標(biāo)/Target
掌握PHP標(biāo)記、注釋和輸出語(yǔ)句,能夠在程序中正確使用PHP標(biāo)記和輸出語(yǔ)句。
熟悉標(biāo)識(shí)符和關(guān)鍵字的使用方法,能夠在程序中正確使用標(biāo)識(shí)符和關(guān)鍵字。
掌握變量、常量和表達(dá)式的使用方法,能夠在程序中正確使用變量、常量和表達(dá)式。
掌握數(shù)據(jù)類型的使用方法,能夠使用不同的數(shù)據(jù)類型操作數(shù)據(jù)。學(xué)習(xí)目標(biāo)/Target
掌握運(yùn)算符的使用方法,能夠在程序中使用運(yùn)算符完成數(shù)據(jù)運(yùn)算。
掌握PHP的流程控制方法,能夠使用分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和跳轉(zhuǎn)語(yǔ)句控制程序的執(zhí)行流程。
掌握文件包含語(yǔ)句的使用方法,能夠根據(jù)需求使用不同的文件包含語(yǔ)句。章節(jié)概述/Summary學(xué)習(xí)一門語(yǔ)言就像蓋大樓一樣,要想蓋一幢安全、穩(wěn)固的大樓,必須要有一個(gè)堅(jiān)實(shí)的地基。同樣地,要想熟練使用PHP語(yǔ)言編程,必須充分了解PHP語(yǔ)言的基礎(chǔ)知識(shí)。本章將對(duì)PHP語(yǔ)法基礎(chǔ)進(jìn)行詳細(xì)講解。目錄/Contents2.12.22.3基本語(yǔ)法變量、常量和表達(dá)式數(shù)據(jù)類型目錄/Contents2.42.52.6運(yùn)算符流程控制文件包含語(yǔ)句基本語(yǔ)法2.1
先定一個(gè)小目標(biāo)!掌握PHP標(biāo)記,能夠在程序中正確使用PHP標(biāo)記。2.1.1PHP標(biāo)記為了讓解析器解析PHP代碼,需要使用PHP標(biāo)記對(duì)代碼進(jìn)行標(biāo)識(shí)。PHP標(biāo)記的兩個(gè)使用場(chǎng)景:在HTML代碼中嵌入PHP代碼在全部是PHP代碼的文件中使用2.1.1PHP標(biāo)記PHP支持的標(biāo)記:2.1.1PHP標(biāo)記標(biāo)記類型開(kāi)始標(biāo)記結(jié)束標(biāo)記標(biāo)準(zhǔn)標(biāo)記<?php?>短標(biāo)記<??>1.標(biāo)準(zhǔn)標(biāo)記標(biāo)準(zhǔn)標(biāo)記以“<?php”開(kāi)始,以“?>”結(jié)束。在HTML代碼中使用標(biāo)準(zhǔn)標(biāo)記:<body><p>HelloHTML</p><p>
<?php此處編寫(xiě)PHP代碼
?></p></body>2.1.1PHP標(biāo)記在全部是PHP代碼的文件中使用標(biāo)準(zhǔn)標(biāo)記,PHP開(kāi)始標(biāo)記要頂格書(shū)寫(xiě),PHP結(jié)束標(biāo)記可以省略。在全部是PHP代碼的文件中使用標(biāo)準(zhǔn)標(biāo)記:<?php此處編寫(xiě)PHP代碼開(kāi)始標(biāo)記位于文件的第1行省略了?>2.1.1PHP標(biāo)記2.短標(biāo)記短標(biāo)記以“<?”開(kāi)始,以“?>”結(jié)束。在HTML代碼中使用短標(biāo)記時(shí),結(jié)束標(biāo)記不可以省略,在全部是PHP代碼的文件中使用短標(biāo)記時(shí),結(jié)束標(biāo)記可以省略。在HTML代碼中使用短標(biāo)記:<?此處編寫(xiě)PHP代碼?>在php.ini中,通過(guò)short_open_tag配置項(xiàng)可以設(shè)置短標(biāo)記的開(kāi)啟或關(guān)閉。如果值為On,則可以使用短標(biāo)記;如果值為Off,則不能使用短標(biāo)記。2.1.1PHP標(biāo)記注意:如果腳本中包含XML內(nèi)容,應(yīng)避免使用短標(biāo)記。這是因?yàn)椤?lt;?”是XML解析器的一個(gè)處理指令,如果腳本中包含XML內(nèi)容并使用了短標(biāo)記,PHP解析器可能會(huì)混淆XML處理指令和PHP短標(biāo)記。2.1.1PHP標(biāo)記在全部是PHP代碼文件中,如果省略PHP結(jié)束標(biāo)記,每條語(yǔ)句都要寫(xiě)語(yǔ)句結(jié)束符“;”。如果沒(méi)有寫(xiě)語(yǔ)句結(jié)束符,運(yùn)行程序會(huì)報(bào)錯(cuò)。在htdocs目錄下創(chuàng)建test.php,演示不添加語(yǔ)句結(jié)束符程序的運(yùn)行結(jié)果:腳下留心:正確使用語(yǔ)句結(jié)束符<?phpecho'生命在于運(yùn)動(dòng)!'正確使用語(yǔ)句結(jié)束符Parseerror表示解析錯(cuò)誤,syntaxerror表示語(yǔ)法錯(cuò)誤
先定一個(gè)小目標(biāo)!掌握注釋的使用,能夠在程序中正確使用注釋。2.1.2注釋為了方便開(kāi)發(fā)人員閱讀和維護(hù)代碼,可以為代碼添加注釋,通過(guò)注釋對(duì)代碼進(jìn)行解釋說(shuō)明。PHP常用的注釋:2.1.2注釋單行注釋//單行注釋echo'生命在于運(yùn)動(dòng)!';#單行注釋echo'Hello,PHP';
多行注釋/*
多行注釋*/echo'生命在于運(yùn)動(dòng)!';通常使用“//”注釋“/*”和“*/”之間的內(nèi)容為多行注釋的內(nèi)容
先定一個(gè)小目標(biāo)!掌握輸出語(yǔ)句的使用,能夠在程序中正確使用輸出語(yǔ)句。2.1.3輸出語(yǔ)句2.1.3輸出語(yǔ)句echoPHP常用的輸出語(yǔ)句printprint_r()var_dump()1.echoecho用于將數(shù)據(jù)以字符串形式輸出,輸出多個(gè)數(shù)據(jù)時(shí)使用逗號(hào)“,”分隔,示例代碼如下。echo'true'; //輸出結(jié)果:trueecho'result=','4'; //輸出結(jié)果:result=42.1.3輸出語(yǔ)句2.printprint與echo的用法類似,區(qū)別在于print一次只能輸出一個(gè)數(shù)據(jù),示例代碼如下。print'生命在于運(yùn)動(dòng)!'; //輸出結(jié)果:生命在于運(yùn)動(dòng)3.print_r()print_r()一次輸出一個(gè)或多個(gè)數(shù)據(jù),示例代碼如下。print_r('hello'); //輸出結(jié)果:helloprint_r(array(1,1.6)); //輸出結(jié)果:Array([0]=>1[1]=>1.6)2.1.3輸出語(yǔ)句4.var_dump()var_dump()一次輸出一個(gè)或多個(gè)數(shù)據(jù),輸出結(jié)果中包含數(shù)據(jù)的類型和值,示例代碼如下。var_dump('hello'); //輸出結(jié)果:string(5)"hello"var_dump(array(1,1.6)); //輸出結(jié)果:array(2){[0]=>int(1)[1]=>float(1.6)}print_r()輸出的內(nèi)容簡(jiǎn)潔,易于閱讀var_dump()輸出的內(nèi)容詳細(xì),包含類型和長(zhǎng)度,方便全面了解數(shù)據(jù)信息多學(xué)一招:echo語(yǔ)句的簡(jiǎn)寫(xiě)語(yǔ)法echo語(yǔ)句的簡(jiǎn)寫(xiě)語(yǔ)法語(yǔ)法格式<?=要輸出的內(nèi)容?>示例代碼<?=是<?php和echo的簡(jiǎn)寫(xiě)?>是結(jié)束標(biāo)記<?='apple'?>
先定一個(gè)小目標(biāo)!熟悉標(biāo)識(shí)符的使用,能夠在程序中正確使用標(biāo)識(shí)符。2.1.4標(biāo)識(shí)符編寫(xiě)程序時(shí),經(jīng)常使用符號(hào)來(lái)標(biāo)記某些實(shí)體,如變量名、函數(shù)名、類名、方法名等,這些符號(hào)被稱為標(biāo)識(shí)符。定義標(biāo)識(shí)符時(shí)要遵循的規(guī)則:標(biāo)識(shí)符由字母、數(shù)字和下畫(huà)線組成。標(biāo)識(shí)符必須以字母或下畫(huà)線開(kāi)頭。標(biāo)識(shí)符用作變量名時(shí),區(qū)分大小寫(xiě)。2.1.4標(biāo)識(shí)符合法標(biāo)識(shí)符非法標(biāo)識(shí)符test_testtest8866test 123test *test
先定一個(gè)小目標(biāo)!熟悉關(guān)鍵字的使用,能夠在程序中正確使用關(guān)鍵字。2.1.5關(guān)鍵字關(guān)鍵字是PHP預(yù)先定義好并賦予了特殊含義的單詞,也稱作保留字。使用關(guān)鍵字時(shí),需要注意以下兩點(diǎn):關(guān)鍵字不能作為常量、函數(shù)名或類名使用。關(guān)鍵字不推薦作為變量名使用,容易混淆。PHP常見(jiàn)關(guān)鍵字:__halt_compiler()abstractandarray()asbreakcallablecasecatchclasscloneconstcontinuedeclaredefaultdie()doechoelseelseifempty()enddeclareendforendforeachendifendswitchendwhileeval()exit()extends2.1.5關(guān)鍵字PHP常見(jiàn)關(guān)鍵字:finalfinallyfnforforeachfunctionglobalgotoifimplementsincludeinclude_onceinstanceofinsteadofinterfaceisset()list()matchnamespaceneworprintprivateprotectedpublicreadonlyrequirerequire_oncereturnstaticswitchthrowtraittryunset()usevarwhilexoryieldyieldfrom__CLASS____DIR____FILE____FUNCTION____LINE____METHOD____NAMESPACE____TRAIT__
2.1.5關(guān)鍵字
先定一個(gè)小目標(biāo)!掌握PHP基本語(yǔ)法,能夠根據(jù)需求實(shí)現(xiàn)在網(wǎng)頁(yè)中嵌入PHP代碼。2.1.6【案例】在網(wǎng)頁(yè)中嵌入PHP代碼通常情況下,網(wǎng)頁(yè)文件以.html為擴(kuò)展名,如果想要網(wǎng)頁(yè)中的內(nèi)容動(dòng)態(tài)變化,可以在網(wǎng)頁(yè)中嵌入PHP代碼。本案例將實(shí)現(xiàn)在網(wǎng)頁(yè)中嵌入PHP代碼,輸出“生命在于運(yùn)動(dòng)!”。
案例需求2.1.6【案例】在網(wǎng)頁(yè)中嵌入PHP代碼①使用VSCode編輯器創(chuàng)建demo01.php文件,在該文件中編寫(xiě)一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)。②在demo01.php中嵌入PHP代碼,使用PHP標(biāo)記和輸出語(yǔ)句輸出“生命在于運(yùn)動(dòng)!”。
實(shí)現(xiàn)思路2.1.6【案例】在網(wǎng)頁(yè)中嵌入PHP代碼變量、常量和表達(dá)式2.2
先定一個(gè)小目標(biāo)!掌握變量的使用,能夠在程序中正確使用變量。2.2.1變量在程序運(yùn)行期間,會(huì)產(chǎn)生一些臨時(shí)數(shù)據(jù),這些數(shù)據(jù)可以通過(guò)變量保存。變量是保存可變數(shù)據(jù)的容器,變量的表示方式為“$變量名”,變量名遵循標(biāo)識(shí)符的命名規(guī)則,例如“$num”就是一個(gè)變量。2.2.1變量在PHP中,不需要事先聲明就可以對(duì)變量進(jìn)行賦值和使用。2.2.1變量變量賦值的兩種方式傳值賦值引用賦值1.傳值賦值傳值賦值是將“=”右邊的數(shù)據(jù)賦值給左邊的變量。傳值賦值的示例代碼:2.2.1變量$a=10; //定義變量$a,賦值為10$b=$a; //將$a的值賦值給$b$a=100; //將$a的值修改為100echo$b; //輸出$b的值,結(jié)果為10“$a=10;”“$b=$a;”“$a=100;”都是對(duì)變量的傳值賦值當(dāng)變量$a的值修改為100時(shí),變量$b的值依然是102.引用賦值引用賦值是在要賦值的變量前添加“&”符號(hào)。引用賦值后,如果其中一個(gè)變量的值發(fā)生改變,另一個(gè)變量的值也會(huì)發(fā)生改變。引用賦值的示例代碼:2.2.1變量$a=10; //定義變量$a,賦值為10$b=&$a; //將$a的值引用賦值給$b$a=100; //將$a的值修改為100echo$b; //輸出$b的值,結(jié)果為100$b相當(dāng)于$a的別名,當(dāng)變量$a的值修改為100時(shí),變量$b的值也變成了100
先定一個(gè)小目標(biāo)!掌握可變變量的使用,能夠在程序中正確使用可變變量。2.2.2可變變量在開(kāi)發(fā)過(guò)程中,為了方便動(dòng)態(tài)改變變量名稱,PHP提供了一種特殊的變量用法:可變變量??勺冏兞吭谧兞壳凹印?”符號(hào),將變量的值作為變量的名稱,實(shí)現(xiàn)動(dòng)態(tài)改變變量的名稱。使用可變變量的示例代碼:$a='say';$say='Hello';$Hello='Lucy';echo$a; //輸出結(jié)果:sayecho$$a; //輸出結(jié)果:Helloecho$$$a; //輸出結(jié)果:Lucy可變變量$$a相當(dāng)于使用變量$a的值作為$$a變量的名稱如果變量$a的值是數(shù)字,可變變量$$a就是非法標(biāo)識(shí)符2.2.2可變變量
先定一個(gè)小目標(biāo)!掌握常量的使用,能夠在程序中正確使用常量。2.2.3常量常量是保存不變數(shù)據(jù)的容器,常量一旦被定義就不能被修改或重新定義。2.2.3常量定義常量的兩種方式define()函數(shù)const關(guān)鍵字什么是函數(shù):函數(shù)是一段可重復(fù)使用的代碼塊,用于完成指定的操作,調(diào)用函數(shù)時(shí)傳入?yún)?shù),函數(shù)執(zhí)行成功后返回處理結(jié)果。2.2.3常量1.define()函數(shù)使用define()函數(shù)的語(yǔ)法格式:2.2.3常量define($name,$value,$case_insensitive);$name是常量名稱,通常使用大寫(xiě)字母$value是常量值$case_insensitive指定常量名稱是否區(qū)分大小寫(xiě),默認(rèn)值false表示區(qū)分大小寫(xiě)使用define()函數(shù)定義常量:define('PAI','3.14');獲取常量的值:echo'圓周率=',PAI; //輸出結(jié)果:圓周率=3.14echo'圓周率=',constant('PAI'); //輸出結(jié)果:圓周率=3.142.const關(guān)鍵字在const關(guān)鍵字后面跟上常量名稱,再使用“=”給常量賦值。給常量賦值時(shí),除了使用具體的值外,還可以使用表達(dá)式,示例代碼如下。2.2.3常量constR=5;echo'半徑=',R; //輸出結(jié)果:半徑=5constD=2*R;echo'直徑=',D; //輸出結(jié)果:直徑=10
先定一個(gè)小目標(biāo)!掌握預(yù)定義常量的使用,能夠使用預(yù)定義常量獲取系統(tǒng)信息。2.2.4預(yù)定義常量常用的預(yù)定義常量:2.2.4預(yù)定義常量預(yù)定義常量名功能描述PHP_VERSION獲取PHP的版本信息PHP_OS獲取運(yùn)行PHP的操作系統(tǒng)信息PHP_INT_MAX獲取當(dāng)前PHP版本支持的最大整型數(shù)字PHP_INT_SIZE獲取當(dāng)前PHP版本的整數(shù)大小,以字節(jié)為單位E_ERROR表示運(yùn)行時(shí)致命性錯(cuò)誤E_WARNING表示運(yùn)行時(shí)警告錯(cuò)誤(非致命)E_PARSE表示編譯時(shí)解析錯(cuò)誤E_NOTICE表示運(yùn)行時(shí)提醒信息
先定一個(gè)小目標(biāo)!掌握表達(dá)式的使用,能夠在程序中正確使用表達(dá)式。2.2.5表達(dá)式表達(dá)式是PHP的基石,任何有值的內(nèi)容都可以理解為表達(dá)式。例如:“1”是一個(gè)值為1的表達(dá)式?!?a=1”表示將表達(dá)式“1”的值賦值給$a,“$a=1”也構(gòu)成了一個(gè)表達(dá)式,該表達(dá)式的值為1;“1+4”示將1和4相加,表達(dá)式的值為5。2.2.5表達(dá)式通過(guò)代碼演示表達(dá)式的使用方法:echo$a=1;//輸出表達(dá)式“$a=1”的值echo$a+4;
//輸出表達(dá)式“$a+4”的值$a=$a+4;
//將表達(dá)式“$a+4”的值賦值給$a$b=$a=1;//將表達(dá)式“$a=1”的值賦值給$becho5,6; //輸出表達(dá)式“5”和表達(dá)式“6”的值var_dump($b);//輸出表達(dá)式“$b”的值var_dump($a+$b);//輸出表達(dá)式“$a+$b”的值2.2.5表達(dá)式
先定一個(gè)小目標(biāo)!掌握變量和常量的使用,能夠根據(jù)需求實(shí)現(xiàn)顯示服務(wù)器信息。2.2.6【案例】顯示服務(wù)器信息在后臺(tái)項(xiàng)目的開(kāi)發(fā)中,為了讓系統(tǒng)管理員更好地了解服務(wù)器的相關(guān)信息,通常會(huì)在后臺(tái)首頁(yè)顯示一些系統(tǒng)信息和統(tǒng)計(jì)數(shù)據(jù)。學(xué)習(xí)了變量與常量的知識(shí)后,下面通過(guò)“顯示服務(wù)器信息”的案例對(duì)所學(xué)的知識(shí)進(jìn)行練習(xí)。本案例要求在表格中顯示PHP的版本號(hào)和操作系統(tǒng)類型。
案例需求2.2.6【案例】顯示服務(wù)器信息①使用VSCode編輯器創(chuàng)建demo02.php文件,在文件中編寫(xiě)表格,顯示服務(wù)器信息。②在表格中使用預(yù)定義常量PHP_VERSION獲取PHP版本號(hào),使用預(yù)定義常量PHP_OS獲取操作系統(tǒng)類型。
實(shí)現(xiàn)思路2.2.6【案例】顯示服務(wù)器信息數(shù)據(jù)類型2.3
先定一個(gè)小目標(biāo)!掌握數(shù)據(jù)類型的分類,能夠在程序中正確使用數(shù)據(jù)類型。2.3.1數(shù)據(jù)類型分類2.3.1數(shù)據(jù)類型分類PHP的數(shù)據(jù)類型:1.布爾型布爾型有true和false兩個(gè)值,表示邏輯上的“真”和“假”,true和false不區(qū)分大小寫(xiě),通常使用布爾型的值進(jìn)行邏輯判斷。定義布爾型變量:$flag1=true;$flag2=false;2.3.1數(shù)據(jù)類型分類2.整型整型用于表示整數(shù),它可以是二進(jìn)制數(shù)、八進(jìn)制數(shù)、十進(jìn)制數(shù)和十六進(jìn)制數(shù),且前面加上“+”或“-”符號(hào),表示正數(shù)或負(fù)數(shù)。二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)的表示方式:二進(jìn)制數(shù)由0和1組成,需要加前綴0b或0B。八進(jìn)制數(shù)由0~7組成,需要加前綴0。十六進(jìn)制數(shù)由0~9和A~F(或a~f)組成,需要加前綴0x或0X。定義整型變量:$bin=0b111011; //二進(jìn)制數(shù)$oct=073; //八進(jìn)制數(shù)$dec=59; //十進(jìn)制數(shù)$hex=0x3b; //十六進(jìn)制數(shù)2.3.1數(shù)據(jù)類型分類整數(shù)在32位操作系統(tǒng)中的取值范圍是-2147483648~2147483647,在64位操作系統(tǒng)中的取值范圍是-9223372036854775808~9223372036854775807。當(dāng)定義的整數(shù)超出操作系統(tǒng)的取值范圍時(shí),整數(shù)會(huì)被轉(zhuǎn)換為浮點(diǎn)數(shù)。以64位操作系統(tǒng)為例,演示整型數(shù)值超出取值范圍的情況:$number1=9223372036854775807;//正常取值范圍的整型數(shù)據(jù)var_dump($number1); //輸出結(jié)果:int(9223372036854775807)$number2=9223372036854775808;//超出取值范圍的整型數(shù)據(jù)var_dump($number2);
//輸出結(jié)果:float(9.223372036854776E+18)2.3.1數(shù)據(jù)類型分類3.浮點(diǎn)型浮點(diǎn)型用于表示浮點(diǎn)數(shù),程序中的浮點(diǎn)數(shù)類似數(shù)學(xué)中的小數(shù)。浮點(diǎn)數(shù)的有效位數(shù)是14位,有效位數(shù)是指從最左邊第一個(gè)不為0的數(shù)開(kāi)始,直到末尾數(shù)的個(gè)數(shù),且不包括小數(shù)點(diǎn)??梢允褂脙煞N方式表示浮點(diǎn)數(shù),分別是標(biāo)準(zhǔn)格式和科學(xué)記數(shù)法格式。使用標(biāo)準(zhǔn)格式定義浮點(diǎn)型變量:2.3.1數(shù)據(jù)類型分類標(biāo)準(zhǔn)格式科學(xué)記數(shù)法格式$fnum1=1.759;$fnum2=-4.382;$fnum3=1.234E-2;//等同于1.234×10-2$fnum4=7.469E-4;//等同于7.469×10-4科學(xué)記數(shù)法表示一個(gè)數(shù)與10的n次冪相乘,一般使用E或e表示10的冪。例如,5×103可以寫(xiě)成5E3或5e34.字符串型字符串型用于表示字符串,字符串是由連續(xù)的字符組成的字符序列,需要使用單引號(hào)或雙引號(hào)標(biāo)注。定義字符串型變量:$str1='Hello';//單引號(hào)字符串$str2="PHP";//雙引號(hào)字符串2.3.1數(shù)據(jù)類型分類單引號(hào)字符串和雙引號(hào)字符串的區(qū)別:$country='中國(guó)';echo'張三來(lái)自$country';//輸出結(jié)果:張三來(lái)自$countryecho"張三來(lái)自$country";//輸出結(jié)果:張三來(lái)自中國(guó)單引號(hào)字符串的變量原樣輸出雙引號(hào)字符串中的變量解析為中國(guó)雙引號(hào)字符串中出現(xiàn)變量時(shí),可能會(huì)出現(xiàn)變量名和字符串混淆的情況。為了能夠讓PHP識(shí)別雙引號(hào)字符串中的變量名,可以使用“{}”對(duì)變量名進(jìn)行界定。$ap='ma';$apple='test';echo"$apple"; //輸出結(jié)果:testecho"{$ap}ple"; //輸出結(jié)果:maple2.3.1數(shù)據(jù)類型分類在雙引號(hào)字符串中使用雙引號(hào)時(shí),使用“\"”表示雙引號(hào)。在單引號(hào)字符串中使用單引號(hào)時(shí),使用“\'”表示單引號(hào)。echo"在雙引號(hào)字符串中使用\"雙引號(hào)\""; //輸出結(jié)果:在雙引號(hào)字符串中使用"雙引號(hào)"echo'在單引號(hào)字符串中使用\'單引號(hào)\''; //輸出結(jié)果:在單引號(hào)字符串中使用'單引號(hào)'2.3.1數(shù)據(jù)類型分類“\””“\'”又被稱為轉(zhuǎn)義字符。轉(zhuǎn)義字符是用于改變字符的解釋或含義的特殊字符序列,通常使用轉(zhuǎn)義字符表示一些特殊字符或執(zhí)行指定的操作。當(dāng)反斜線與特定的字母或字符組合在一起時(shí),會(huì)產(chǎn)生特定的效果。在雙引號(hào)字符串中支持的常用轉(zhuǎn)義字符:2.3.1數(shù)據(jù)類型分類轉(zhuǎn)義字符含義\n換行(ASCII字符集中的LF)\r回車(ASCII字符集中的CR)\t水平制表符(ASCII字符集中的HT)\v垂直制表符(ASCII字符集中的VT)\eEscape(ASCII字符集中的ESC)\f換頁(yè)(ASCII字符集中的FF)\\反斜線\$美元符
先定一個(gè)小目標(biāo)!掌握數(shù)據(jù)類型的檢測(cè),能夠使用數(shù)據(jù)類型檢測(cè)函數(shù)檢測(cè)數(shù)據(jù)。2.3.2數(shù)據(jù)類型檢測(cè)當(dāng)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算時(shí),數(shù)據(jù)類型不符合預(yù)期可能會(huì)導(dǎo)致程序出錯(cuò)。例如,兩個(gè)數(shù)字相加,這兩個(gè)數(shù)字的數(shù)據(jù)類型應(yīng)該是整型或浮點(diǎn)型,如果是其他數(shù)據(jù)類型,運(yùn)算可能會(huì)出錯(cuò)。為了檢測(cè)數(shù)據(jù)的數(shù)據(jù)類型是否符合預(yù)期,PHP提供了一組形式為“is_*()”的內(nèi)置函數(shù),函數(shù)的參數(shù)是要檢測(cè)的數(shù)據(jù),函數(shù)的返回值是檢測(cè)結(jié)果,返回值true表示數(shù)據(jù)類型符合預(yù)期,返回值false表示數(shù)據(jù)類型不符合預(yù)期。2.3.2數(shù)據(jù)類型檢測(cè)數(shù)據(jù)類型檢測(cè)函數(shù):2.3.2數(shù)據(jù)類型檢測(cè)函數(shù)功能描述is_bool(mixed$value)檢測(cè)是否為布爾型is_string(mixed$value)檢測(cè)是否為字符串型is_float(mixed$value)檢測(cè)是否為浮點(diǎn)型is_int(mixed$value)檢測(cè)是否為整型is_null(mixed$value)檢測(cè)是否為空值is_array(mixed$value)檢測(cè)是否為數(shù)組is_resource(mixed$value)檢測(cè)是否為資源is_object(mixed$value)檢測(cè)是否為對(duì)象is_numeric(mixed$value)檢測(cè)是否為數(shù)字或由數(shù)字組成的字符串使用var_dump()輸出數(shù)據(jù)類型檢測(cè)函數(shù)的結(jié)果:2.3.2數(shù)據(jù)類型檢測(cè)var_dump(is_bool('1')); //輸出結(jié)果:bool(false)var_dump(is_string('php')); //輸出結(jié)果:bool(true)var_dump(is_float(23)); //輸出結(jié)果:bool(false)var_dump(is_int(23.0)); //輸出結(jié)果:bool(false)var_dump(is_numeric(45.6)); //輸出結(jié)果:bool(true)
先定一個(gè)小目標(biāo)!掌握數(shù)據(jù)類型的轉(zhuǎn)換,能夠?qū)?shù)據(jù)進(jìn)行類型轉(zhuǎn)換。2.3.3數(shù)據(jù)類型轉(zhuǎn)換當(dāng)參與運(yùn)算的兩個(gè)數(shù)據(jù)的數(shù)據(jù)類型不同時(shí),需要將這兩個(gè)數(shù)據(jù)轉(zhuǎn)換成相同的數(shù)據(jù)類型。數(shù)據(jù)類型轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。2.3.3數(shù)據(jù)類型轉(zhuǎn)換1.自動(dòng)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換由PHP內(nèi)部自動(dòng)完成,開(kāi)發(fā)人員無(wú)法干預(yù)。常見(jiàn)的自動(dòng)類型轉(zhuǎn)換有3種,具體如下:(1)自動(dòng)轉(zhuǎn)換成布爾型(2)自動(dòng)轉(zhuǎn)換成整型(3)自動(dòng)轉(zhuǎn)換成字符串型2.3.3數(shù)據(jù)類型轉(zhuǎn)換(1)自動(dòng)轉(zhuǎn)換成布爾型運(yùn)算時(shí),整型0、浮點(diǎn)型0.0、空字符串和字符串0會(huì)被轉(zhuǎn)換為false,其他值被轉(zhuǎn)換為true。var_dump(0==false); //輸出結(jié)果:bool(true)var_dump(0.0==false); //輸出結(jié)果:bool(true)var_dump(''==false); //輸出結(jié)果:bool(true)var_dump('0'==false); //輸出結(jié)果:bool(true)var_dump(1==true); //輸出結(jié)果:bool(true)var_dump(3==true); //輸出結(jié)果:bool(true)var_dump(-5==true); //輸出結(jié)果:bool(true)var_dump(4.0==true); //輸出結(jié)果:bool(true)將整型0、浮點(diǎn)型0.0、空字符串、字符串0和false比較:將整型1、3、-5、浮點(diǎn)型4.0和true比較:2.3.3數(shù)據(jù)類型轉(zhuǎn)換(2)自動(dòng)轉(zhuǎn)換成整型當(dāng)布爾型數(shù)據(jù)自動(dòng)轉(zhuǎn)換成整型時(shí),true會(huì)被轉(zhuǎn)換成整型1,false會(huì)被轉(zhuǎn)換成整型0。var_dump(true+1); //輸出結(jié)果:int(2)var_dump(false+1); //輸出結(jié)果:int(1)當(dāng)字符串型數(shù)據(jù)自動(dòng)轉(zhuǎn)換成整型時(shí),如果字符串是數(shù)字或以數(shù)字開(kāi)頭,則直接轉(zhuǎn)換為該數(shù)值。var_dump('1'+1); //輸出結(jié)果:int(2)var_dump('1PHP'+1); //輸出結(jié)果:int(2)2.3.3數(shù)據(jù)類型轉(zhuǎn)換(3)自動(dòng)轉(zhuǎn)換成字符串型當(dāng)布爾型數(shù)據(jù)自動(dòng)轉(zhuǎn)換成字符串型時(shí),true被轉(zhuǎn)換成字符串“1”,false被轉(zhuǎn)換成空字符串。echo'true被轉(zhuǎn)換成字符串:'.true;//輸出結(jié)果:true被轉(zhuǎn)換成字符串:1echo'false被轉(zhuǎn)換成字符串:'.false;//輸出結(jié)果:false被轉(zhuǎn)換成字符串:當(dāng)整型或浮點(diǎn)型數(shù)據(jù)自動(dòng)轉(zhuǎn)換成字符串型時(shí),數(shù)值直接被轉(zhuǎn)換成字符串。var_dump(1.'PHP'); //輸出結(jié)果:string(4)"1PHP"var_dump(3.14.'PHP'); //輸出結(jié)果:string(7)"3.14PHP"2.3.3數(shù)據(jù)類型轉(zhuǎn)換2.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換是指將某個(gè)變量或數(shù)據(jù)轉(zhuǎn)換成指定的數(shù)據(jù)類型,強(qiáng)制類型轉(zhuǎn)換的語(yǔ)法格式:2.3.3數(shù)據(jù)類型轉(zhuǎn)換(目標(biāo)類型)變量或數(shù)據(jù)強(qiáng)制類型轉(zhuǎn)換中的目標(biāo)類型:目標(biāo)類型功能描述目標(biāo)類型功能描述bool強(qiáng)制轉(zhuǎn)為布爾型float強(qiáng)制轉(zhuǎn)為浮點(diǎn)型string強(qiáng)制轉(zhuǎn)為字符串型array強(qiáng)制轉(zhuǎn)為數(shù)組int強(qiáng)制轉(zhuǎn)為整型object強(qiáng)制轉(zhuǎn)為對(duì)象對(duì)數(shù)據(jù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換:2.3.3數(shù)據(jù)類型轉(zhuǎn)換var_dump((bool)-5.9); //輸出結(jié)果:bool(true)var_dump((int)'hello'); //輸出結(jié)果:int(0)var_dump((float)false);//輸出結(jié)果:float(0)var_dump((string)12);//輸出結(jié)果:string(2)"12"運(yùn)算符2.4
先定一個(gè)小目標(biāo)!掌握算術(shù)運(yùn)算符的使用,能夠使用算術(shù)運(yùn)算符完成數(shù)學(xué)運(yùn)算。2.4.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符是用來(lái)對(duì)數(shù)值類型的數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算的符號(hào)。常用的算術(shù)運(yùn)算符的作用及示例:運(yùn)算符作用示例結(jié)果+加echo5+5;10-減echo6-4;2*乘echo3*4;12/除echo5/5;1%取模(即算術(shù)中的求余數(shù))echo7%5;2**冪運(yùn)算echo3**4;812.4.1算術(shù)運(yùn)算符使用算術(shù)運(yùn)算符的過(guò)程的注意事項(xiàng):①進(jìn)行數(shù)學(xué)運(yùn)算時(shí),運(yùn)算順序要遵循數(shù)學(xué)中的“先乘除、后加減”的原則。②進(jìn)行取模運(yùn)算時(shí),運(yùn)算結(jié)果的正負(fù)取決于被模數(shù)(%左邊的數(shù))的正負(fù),與模數(shù)(%右邊的數(shù))的正負(fù)無(wú)關(guān)。例如,(-8)%7=-1,而8%(-7)=1。2.4.1算術(shù)運(yùn)算符
先定一個(gè)小目標(biāo)!掌握賦值運(yùn)算符的使用,能夠使用賦值運(yùn)算符給變量賦值。2.4.2賦值運(yùn)算符賦值運(yùn)算符用于對(duì)兩個(gè)操作數(shù)進(jìn)行相應(yīng)的運(yùn)算,這兩個(gè)操作數(shù)可以是變量、常量或表達(dá)式。常用的賦值運(yùn)算符的作用及示例:運(yùn)算符作用示例結(jié)果=賦值$a=3;$b=2;$a=3;$b=2;+=加并賦值$a=3;$b=2;$a+=$b;$a=5;$b=2;-=減并賦值$a=3;$b=2;$a-=$b;$a=1;$b=2;*=乘并賦值$a=3;$b=2;$a*=$b;$a=6;$b=2;/=除并賦值$a=3;$b=2;$a/=$b;$a=1.5;$b=2;%=模并賦值$a=3;$b=2;$a%=$b;$a=1;$b=2;.=連接并賦值$a='abc';$a.='def';$a='abcdef';**=冪運(yùn)算并賦值$a=2;$a**=5;$a=32;2.4.2賦值運(yùn)算符在PHP中,一條賦值語(yǔ)句可以對(duì)多個(gè)變量進(jìn)行賦值,示例代碼如下。$first=$second=$third=3;$a=5;$a+=4;//等同于$a=$a+4;“+=”“-=”“*=”“/=”“%=”“.=”“**=”表示先將運(yùn)算符左邊的變量與右邊的值進(jìn)行運(yùn)算,再把運(yùn)算結(jié)果賦值給左邊的變量。以“+=”為例,示例代碼如下。2.4.2賦值運(yùn)算符
先定一個(gè)小目標(biāo)!掌握算術(shù)運(yùn)算符和賦值運(yùn)算符的使用,能夠根據(jù)需求計(jì)算商品價(jià)格。2.4.3【案例】商品價(jià)格計(jì)算用戶在一個(gè)全場(chǎng)8折的網(wǎng)站中購(gòu)買如下水果。
案例需求2.4.3【案例】商品價(jià)格計(jì)算7.99元/斤購(gòu)買2斤6.89元/斤購(gòu)買1斤3.99元/斤購(gòu)買3斤如何使用PHP程序來(lái)計(jì)算此用戶實(shí)際需要支付的費(fèi)用呢?①使用常量保存商品折扣,使用變量保存用戶購(gòu)買的商品名稱、價(jià)格和購(gòu)買數(shù)量。②計(jì)算用戶購(gòu)買的每件商品的價(jià)格和所有商品的價(jià)格。③以表格的形式顯示用戶所購(gòu)買的商品信息和該用戶實(shí)際需要支付的費(fèi)用。
實(shí)現(xiàn)思路2.4.3【案例】商品價(jià)格計(jì)算
先定一個(gè)小目標(biāo)!掌握錯(cuò)誤控制運(yùn)算符的使用,能夠?qū)Ρ磉_(dá)式的結(jié)果進(jìn)行錯(cuò)誤控制。2.4.4錯(cuò)誤控制運(yùn)算符錯(cuò)誤控制運(yùn)算符“@”適合在可能出現(xiàn)錯(cuò)誤的代碼前使用。使用錯(cuò)誤控制運(yùn)算符后,代碼出現(xiàn)錯(cuò)誤時(shí),不會(huì)直接將錯(cuò)誤顯示給用戶。錯(cuò)誤控制運(yùn)算符只針對(duì)就近的表達(dá)式,如果想要對(duì)整個(gè)表達(dá)式的結(jié)果進(jìn)行錯(cuò)誤控制,需要將整個(gè)表達(dá)式使用小括號(hào)“()”標(biāo)注起來(lái),示例代碼如下。$num1=$a+1; //運(yùn)行此行代碼會(huì)出現(xiàn)警告$num2=@$a+1; //運(yùn)行此行代碼不會(huì)出現(xiàn)警告2.4.4錯(cuò)誤控制運(yùn)算符
先定一個(gè)小目標(biāo)!掌握比較運(yùn)算符的使用,能夠?qū)蓚€(gè)數(shù)據(jù)進(jìn)行比較。2.4.5比較運(yùn)算符比較運(yùn)算符用于對(duì)兩個(gè)數(shù)據(jù)進(jìn)行比較,其結(jié)果是一個(gè)布爾型的true或false。常用的比較運(yùn)算符的作用及示例:運(yùn)算符作用示例結(jié)果==等于5==4false!=不等于5!=4true<>
不等于5<>4true===全等于5===5true!==不全等于5!=='5'true>
大于5>5false>=大于或等于5>=5true<
小于5<5false<=小于或等于5<=5true2.4.5比較運(yùn)算符在使用比較運(yùn)算符時(shí)的注意事項(xiàng):①比較兩個(gè)數(shù)據(jù)類型不同的數(shù)據(jù)時(shí),PHP會(huì)自動(dòng)將其轉(zhuǎn)換成相同的數(shù)據(jù)類型后再比較,例如,將3與3.14比較時(shí),會(huì)先將3轉(zhuǎn)換成浮點(diǎn)型3.0,再與3.14比較。②“===”與“!==”運(yùn)算符在進(jìn)行比較時(shí),不僅要比較數(shù)值是否相等,還要比較其數(shù)據(jù)類型是否相同。而“==”和“!=”運(yùn)算符在比較時(shí),只比較數(shù)值是否相等。2.4.5比較運(yùn)算符
先定一個(gè)小目標(biāo)!掌握合并運(yùn)算符的使用,能夠進(jìn)行數(shù)據(jù)存在性的判定。2.4.6合并運(yùn)算符合并運(yùn)算符“??”用于簡(jiǎn)單的數(shù)據(jù)存在性判定,使用合并運(yùn)算符的表達(dá)式的語(yǔ)法格式:<條件表達(dá)式>??<表達(dá)式>$age=NULL;echo$age??18; //輸出結(jié)果:18$age=20;echo$age??18; //輸出結(jié)果:20合并運(yùn)算符的使用:2.4.6合并運(yùn)算符
先定一個(gè)小目標(biāo)!掌握三元運(yùn)算符的使用,能夠根據(jù)條件表達(dá)式結(jié)果返回不同的值。2.4.7三元運(yùn)算符三元運(yùn)算符又稱為三目運(yùn)算符,它是一種特殊的運(yùn)算符,使用三元運(yùn)算符的表達(dá)式的語(yǔ)法格式:<條件表達(dá)式>?<表達(dá)式1>:<表達(dá)式2>echo$age>=18?'已成年':'未成年';三元運(yùn)算符的使用:2.4.7三元運(yùn)算符
先定一個(gè)小目標(biāo)!掌握邏輯運(yùn)算符的使用,能夠?qū)?shù)據(jù)進(jìn)行邏輯判斷。2.4.8邏輯運(yùn)算符邏輯運(yùn)算符是用于邏輯判斷的符號(hào),表達(dá)式返回值類型是布爾型。邏輯運(yùn)算符的作用及示例:運(yùn)算符作用示例結(jié)果&&與$a&&$b$a和$b都為true,則結(jié)果為true,否則為false||或$a||$b$a和$b中至少有一個(gè)為true,則結(jié)果為true,否則為false!非!$a若$a為false,則結(jié)果為true,否則為falsexor異或$axor$b$a和$b一個(gè)為true,一個(gè)為false,則結(jié)果為true,否則為falseand與$aand$b與“&&”運(yùn)算符的作用相同,但優(yōu)先級(jí)較低or或$aor$b與“||”運(yùn)算符的作用相同,但優(yōu)先級(jí)較低2.4.8邏輯運(yùn)算符對(duì)于“與”操作和“或”操作,在實(shí)際開(kāi)發(fā)中需要注意以下兩點(diǎn):①當(dāng)使用“&&”和“and”連接兩個(gè)表達(dá)式時(shí),如果運(yùn)算符左邊表達(dá)式的值為false,則整個(gè)表達(dá)式的結(jié)果為false,運(yùn)算符右邊的表達(dá)式不會(huì)執(zhí)行。②當(dāng)使用“||”和“or”連接兩個(gè)表達(dá)式時(shí),如果運(yùn)算符左邊表達(dá)式的值為true,則整個(gè)表達(dá)式的結(jié)果為true,運(yùn)算符右邊的表達(dá)式不會(huì)執(zhí)行。2.4.8邏輯運(yùn)算符
先定一個(gè)小目標(biāo)!掌握遞增與遞減運(yùn)算符的使用,能夠?qū)?shù)據(jù)進(jìn)行遞增或遞減運(yùn)算。2.4.9遞增與遞減運(yùn)算符遞增與遞減運(yùn)算符也稱為自增與自減運(yùn)算符,它可以被看作一種特定形式的復(fù)合賦值運(yùn)算符。遞增與遞減運(yùn)算符的作用及示例:運(yùn)算符作用示例結(jié)果++遞增(前)$a=2;$b=++$a;$a=3;$b=3;遞增(后)$a=2;$b=$a++;$a=3;$b=2;--遞減(前)$a=2;$b=--$a;$a=1;$b=1;遞減(后)$a=2;$b=$a--;$a=1;$b=2;2.4.9遞增與遞減運(yùn)算符
先定一個(gè)小目標(biāo)!掌握位運(yùn)算符的使用,能夠?qū)?shù)據(jù)進(jìn)行位運(yùn)算。2.4.10位運(yùn)算符位運(yùn)算符是針對(duì)二進(jìn)制位進(jìn)行運(yùn)算的符號(hào)。位運(yùn)算符的作用及示例:運(yùn)算符作用示例結(jié)果&按位與$a&$b$a和$b各二進(jìn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)孕婦裝市場(chǎng)競(jìng)爭(zhēng)狀況及投資趨勢(shì)分析報(bào)告
- 2024-2030年中國(guó)多腔高速半自動(dòng)吹瓶機(jī)資金申請(qǐng)報(bào)告
- 2024-2030年中國(guó)啤酒行業(yè)發(fā)展規(guī)模及前景趨勢(shì)分析報(bào)告
- 2024-2030年中國(guó)廂式貨車行業(yè)市場(chǎng)發(fā)展格局及未來(lái)投資潛力分析報(bào)告
- 2024-2030年中國(guó)卸妝產(chǎn)品市場(chǎng)營(yíng)銷模式及發(fā)展競(jìng)爭(zhēng)力分析報(bào)告版
- 2024年版摩托車銷售合同3篇
- 2024年度環(huán)保型砂石生產(chǎn)設(shè)備采購(gòu)合同協(xié)議2篇
- 2021-2022學(xué)年河南省澠池高級(jí)中學(xué)高一月考數(shù)學(xué)試卷
- 2025年哈爾濱貨運(yùn)從業(yè)資格證模擬考試0題b2b
- 2025年鶴壁道路貨運(yùn)從業(yè)資格證考試
- 海洋平臺(tái)深水管道高效保溫技術(shù)
- 《新疆大學(xué)版學(xué)術(shù)期刊目錄》(人文社科)
- 充電樁維保投標(biāo)方案
- 《如何寫(xiě)文獻(xiàn)綜述》課件
- 肛瘺LIFT術(shù)式介紹
- 通過(guò)《古文觀止》選讀了解古代文學(xué)的社會(huì)功能與價(jià)值
- 語(yǔ)言本能:人類語(yǔ)言進(jìn)化的奧秘
- 職業(yè)生涯規(guī)劃(圖文)課件
- 2024版國(guó)開(kāi)電大??啤禘XCEL在財(cái)務(wù)中的應(yīng)用》在線形考(形考作業(yè)一至四)試題及答案
- 能源管理系統(tǒng)平臺(tái)軟件數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū)
- 中外園林史第七章-中國(guó)近現(xiàn)代園林發(fā)展
評(píng)論
0/150
提交評(píng)論