PHP七天系列之基礎(chǔ)知識(shí)

基礎(chǔ)入門

PHP是什么?

PHP(PHP: Hypertext Preprocessor,超文本預(yù)處理器的縮寫),是一種被廣泛應(yīng)用的開放源代碼的、基于服務(wù)器端的用于產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的、可嵌入HTML中的腳本程序語(yǔ)言,尤其適合 WEB 開發(fā)。

當(dāng)客戶端向服務(wù)器的程序提出請(qǐng)求時(shí),web服務(wù)器根據(jù)請(qǐng)求響應(yīng)對(duì)應(yīng)的頁(yè)面,當(dāng)頁(yè)面中含有php腳本時(shí),服務(wù)器會(huì)交給PHP解釋器進(jìn)行解釋執(zhí)行,將生成的html代碼再回傳給客戶端,客戶端的瀏覽器解釋html代碼,最終形成網(wǎng)頁(yè)格式的頁(yè)面。

執(zhí)行方式

PHP 代碼被包含在特殊的起始符和結(jié)束符中,使得網(wǎng)頁(yè)的腳本可以進(jìn)出“PHP 模式”。其它用 C 或 Perl 語(yǔ)言寫的腳本,需要用大量的命令來(lái)編寫程序以輸出 HTML ,而用PHP 編寫一個(gè) HTML 腳本,只需嵌入了一些代碼來(lái)完成操作(例如,在本例中輸出了一些文本)。和客戶端的 JavaScript 不同的是,PHP 代碼是運(yùn)行在服務(wù)端的。如果在服務(wù)器上建立了如上例類似的代碼,則在運(yùn)行該腳本后,客戶端就能接收到其結(jié)果,但他們無(wú)法得知其背后的代碼是如何運(yùn)作的。甚至可以將 web 服務(wù)器設(shè)置成讓 PHP 來(lái)處理所有的 HTML 文件,這么一來(lái),用戶就無(wú)法得知服務(wù)端到底做了什么。

PHP運(yùn)行環(huán)境安裝

大家在初始學(xué)習(xí)PHP時(shí)使用集成化開發(fā)環(huán)境是最好的選擇,下面是常用的集成開發(fā)環(huán)境

集成開發(fā)軟件 可使用的操作系統(tǒng) 說(shuō)明
WAMP Win 推薦
XAMPP Win/Mac
Mamp Mac 推薦
Lamp Linux(CentOS/Fedora/Debian/Ubuntu)

PHP的特點(diǎn)

  • 是開放源代碼的,服務(wù)器端的腳本語(yǔ)言。
  • 獨(dú)立于操作系統(tǒng),可以運(yùn)行在幾乎所有系統(tǒng)中。
  • 支持大部分的服務(wù)器,如Apache,IIS。
  • 支持大量的數(shù)據(jù)庫(kù),主要是Access\MySQL\SQL Server這三種。
  • 可以創(chuàng)建圖象。
  • … …
  • 還有一些其他特色功能在后面的高級(jí)技術(shù)詳細(xì)介紹。
  • 我們知道的網(wǎng)站如迅雷、新浪微博等大型網(wǎng)站都在使用PHP程序。

C/S與B/S結(jié)構(gòu)

C/S結(jié)構(gòu)

C/S (Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu)

B/S****結(jié)構(gòu)

B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過(guò)WWW瀏覽器來(lái)實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。這樣就大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本。

集成開發(fā)環(huán)境

WAMP

Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python,一組常用來(lái)搭建動(dòng)態(tài)網(wǎng)站或者服務(wù)器的開源軟件,本身都是各自獨(dú)立的程序,但是因?yàn)槌1环旁谝黄鹗褂茫瑩碛辛嗽絹?lái)越高的兼容度,共同組成了一個(gè)強(qiáng)大的Web應(yīng)用程序平臺(tái)。

MAMP

蘋果系統(tǒng)下MAMP PRO是專業(yè)級(jí)版本的經(jīng)典本地服務(wù)器環(huán)境的os x軟件。MAMP這幾個(gè)首字母代表蘋果的OSX系統(tǒng)上的Macintosh、Apache、MySQL和PHP,顧名思義,你應(yīng)該知道MAMP的強(qiáng)大功能 啦!MAMP 內(nèi)含 Apache 伺服器、PHP 安裝套件以及MySQL安裝套件。

PHP的標(biāo)記風(fēng)格

<?php … … ?>

這是PHP推薦使用的標(biāo)記風(fēng)格。服務(wù)器管理員不能禁用這種風(fēng)格的標(biāo)記。

分號(hào)

PHP用分號(hào)來(lái)分隔簡(jiǎn)單的語(yǔ)句。復(fù)合語(yǔ)句用大括號(hào)來(lái)標(biāo)記代碼塊,如條件測(cè)試或循環(huán),在大括號(hào)后面不要用分號(hào)。和其他語(yǔ)言不一樣的是,在PHP中右括號(hào)(?>)前的分號(hào)不是必選的。

空白和換行符

一般來(lái)說(shuō),空白符在PHP中無(wú)關(guān)緊要。可以將一個(gè)語(yǔ)句展開成任意行,或者將語(yǔ)句緊縮在一行。
可以利用這個(gè)靈活的格式來(lái)使代碼更具有可讀性(通過(guò)排列分配、縮進(jìn)等)。一些懶惰的程序員利用這種自由的格式創(chuàng)建根本無(wú)法閱讀的代碼,這是不提倡的。

程序的注釋

PHP支持C、C++和Shell腳本風(fēng)格的注釋,如下:

// 單行注釋
/* ...*/  多行注釋      (注意:不能嵌套)
# 腳本注釋

查看數(shù)據(jù)

echo

輸出一個(gè)或多個(gè)變量,他不是函數(shù),不需要使用括號(hào),如果輸出多個(gè)請(qǐng)用逗號(hào)分隔

echo 1,2,3,4;

var_dump

打印變量的相關(guān)信息

var_dump(1234);

區(qū)別:echo 是直接輸出,var_dump輸出和帶有變量類型

變量知識(shí)

定義變量

PHP是弱類型語(yǔ)言,不像其他語(yǔ)言需要對(duì)變量進(jìn)行類型聲明。PHP中以 $ 作為前綴來(lái)定義變量,以a~z(大小寫)或 _ 下劃線定義變量名。

下面是合法的變量名

$pf =  'pfinal.com';
$_name = 'PFinal社區(qū)';

下面是非法的變量聲明

$999 = 'yahoo.com'
$&* = 'sina.com.cn'

弱類型

PHP是一種非常弱的類型語(yǔ)言。在大多數(shù)編程語(yǔ)言中,變量只能保持一種類型的數(shù)據(jù),而且這個(gè)類型必須在使用變量前聲明,例如C語(yǔ)言中。

而在PHP中,變量的類型通常不是由程序員設(shè)定的,確切地說(shuō),是根據(jù)該變量使用的上下文在運(yùn)行時(shí)(即變量的值)決定的。

簡(jiǎn)單來(lái)說(shuō),var = 1;就是數(shù)字,var2 = '1'就是字符串,變量類型是由值決定的。

傳值與引用

傳值賦值

直接使用 = 將變量的值賦值給另一個(gè)變量。

$a = 1;
$b = $a;
$b = 2;
echo $a;//結(jié)果是1

引用賦值

將一個(gè)變量的內(nèi)存地址賦值給另一個(gè)變量的行為即傳址賦值。需要在 = 等號(hào)前加上 & 引用符號(hào),這樣兩個(gè)變量指向內(nèi)存中的一個(gè)地址,任何一個(gè)變量的改變都影響到另一個(gè)變量,有點(diǎn)類似于快捷方式的概念。

$a = 1;
$b = &$a;
$b = 2;
echo $a;//結(jié)果是2

可變變量

可以變量即使用一個(gè)變量的值,作為另一個(gè)變量名。

$a = 'hello';   //普通變量
$$a = 'world';  //可變變量 相當(dāng)于:$hello = ‘world’;
echo "$a ${$a}";//輸出:hello world
echo "$a $hello";//輸出:hello world

變量作用域

變量作用域指變量在代碼中可以訪問(wèn)的位置。

超全局變量

可以代碼的任何位置都可以訪問(wèn)的變量

變量 說(shuō)明
$_GET 地址欄GET提交
$_POST 表單POST提交
$_FILES 文件上傳變量
$_SESSION 會(huì)話變量
$_COOKIE cookie值變量
$_GLOBALS 全局變量
$_REQUEST 包含$_GET、$_POST、$_COOKIE
$_SERVER 服務(wù)器環(huán)境變量

全局變量

全局聲明(函數(shù)外聲明)的變量會(huì)保存在 $_GLOBALS 中,函數(shù)內(nèi)默認(rèn)不能訪問(wèn)到全局變量,在函數(shù)中訪問(wèn)需要使用 global 關(guān)鍵字。

$pf='PFinal社區(qū)';
function p() {
    //利? global 引入全局變量
    global $pf; 
    echo $pf;
}
p(); 

也可以使用全局?jǐn)?shù)組$GLOBALS調(diào)?用全局變量量。 如: $GLOBALS['hd'];

檢測(cè)變量

通過(guò)isset 函數(shù)可以檢測(cè)變量是否定義。

var_dump(isset($name));
# 結(jié)果是false

變量銷毀

php在全部代碼執(zhí)行結(jié)束后會(huì)刪除所有變量,也使用 unset 函數(shù)可以在程序運(yùn)行中刪除變量。

$name='pfinalClub.com';
unset($name);

全局變量不能在函數(shù)中刪除

$name = 'pfinalClub.com';
function run()
{
    global $name;
    unset($name);
}
run();
echo $name;
# 依然可以輸出 pfinalClub.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 軟件體系結(jié)構(gòu) 1.單主機(jī)結(jié)構(gòu) 界面顯示、業(yè)務(wù)邏輯和數(shù)據(jù)存取功能都是在用戶主機(jī)上實(shí)現(xiàn),需要下載軟件并安裝,易盜版 2...
    sidney_c閱讀 825評(píng)論 2 3
  • PHP 是一種創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語(yǔ)言。PHP(全稱:PHP:Hypertext Prepro...
    浮若年華_7a56閱讀 525評(píng)論 1 0
  • php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語(yǔ)言,可以運(yùn)行在Web服務(wù)器端。 php是一門后臺(tái)編程語(yǔ)言,...
    dptms閱讀 1,990評(píng)論 1 15
  • 來(lái)自專欄鑒峰筆記 鑒峰自我管理 [連續(xù)簽到第381天] 2019-1-23 周三 《接受不親》 每周故事分享 解...
    鑒峰筆記閱讀 398評(píng)論 0 0
  • 有很多好習(xí)慣堅(jiān)持下去會(huì)讓你受益匪淺,關(guān)鍵是如何堅(jiān)持?別擔(dān)心,看完這篇,你就會(huì)知道習(xí)慣形成的原理,掌握習(xí)慣的主動(dòng)權(quán),...
    晨溪流閱讀 802評(píng)論 0 0

友情鏈接更多精彩內(nèi)容