PHP基础知识1
1. 服務器軟件
使計算機具備提供某種服務能力的應用軟件,稱為服務器軟件,通過安裝相應的服務軟件,然后進行配置后就可以使計算具備了提供某種服務的能力。
常見服務器分類: 文件服務器、數據庫服務器、郵件服務器、Web服務器等;
其中與我們息息相關的是 web服務器, 想讓計算機成為 web 服務器, 就要安裝服務器軟件, 提供 web 服務
常見的提供web服務的服務器軟件:
-
(1) IIS windows web 服務器軟件
-
(2) apache web 服務器軟件 ( 開源免費的 )
-
(3) Tomact
-
(4) Nginx
2. HTTP服務器(web服務器)
即( web服務器 )網站服務器,主要提供文檔(文本、圖片、視頻、音頻)web瀏覽服務,一般安裝Apache、Nginx服務器軟件。
3. 軟件架構
軟件架構可以分為BS架構與CS架構 。
3.1 C/S架構
Client/Server架構,即客戶端/服務器架構。需要安裝對應的客戶端軟件,才能獲取服務器的服務。
常見的CS架構:? QQ、LOL、微信等。
特點:
-
需要安裝才能使用
-
性能高效,使用更加穩定和流暢
3.2 B/S架構
Broswer/Server架構,即瀏覽器/服務器架構。隨著Internet的興起,無需安裝專門客戶端軟件,通過瀏覽器去請求服務器;
-
不需要安裝,只需要瀏覽器即可。
-
相比CS架構,性能相對較差,沒有那么流暢和穩定。
4. 動態網站與靜態網站
靜態網站:使用瀏覽器端語言進行編程,網站由靜態代碼(HTML.CSS,JS)組成。
動態網站?:網頁通過服務器的程序(php等)動態生成。用戶可以和服務器進行交互(可以根據用戶輸入的不同信息,返回不同的運行結果)。
5. 網絡基礎
5.1 ip地址
所謂IP地址就是給每個連接在互聯網上的主機分配的一個32位地址。(就像每個人的身份證號碼一樣)。
通過ip就可以找到具體的某一臺計算機。
例 192.168.1.110
弊端:沒有規律,不方便記憶和推廣
查看本機IP地址 ipconfig、ifconfig(linux)
ping 192.168.1.110 ?//查看和某個同學的電腦是否連通127.0.0.1?作為本地測試的IP地址。(又叫本地回環地址)
192.168??開頭為局域網的地址。
5.2 域名
由于IP地址基于數字,不方便記憶,于是便用域名來代替IP地址,域名是一個IP地址的“好記的名字”
查看域名對應的IP地址 ping
ping jd.com ?//可以獲取到京東的ip特殊的域名
? localhost,意思為本地主機。這是一個保留域名,主要用于本地測試,對應IP地址為127.0.0.1。
5.3 DNS服務器
DNS(Domain Name System)因特網上作為域名和IP地址相互映射的一個分布式數據庫, 能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。
簡單的說就是用于記錄IP地址和域名之間的對應關系。
查找優先級 本機hosts文件、DNS服務器。
5.4 端口
端口號是計算機與外界通訊交流的出入口,每個端口對應不同的服務。
查看端口占用情況 netstat -an
常見端口號 80、3306、21 ftp
5.5 本地hosts
Hosts是一個沒有擴展名的系統文件,可以用記事本等工具打開,其作用就是將一些常用的網址域名與其對應的IP地址建立一個關聯“數據庫”,當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,系統會立即打開對應網頁,如果沒有找到,則系統會再將網址提交DNS域名解析服務器進行IP地址的解析。
//hosts文件的地址:C:\Windows\System32\drivers\etc //hosts文件內容 127.0.0.1 localhost 127.0.0.1 localhost 127.0.0.1 study.com 127.0.0.1 www.study.com6. PHP簡介
-
開源(open source)軟件,跨平臺,常用操作系統穩定執行。Windows / Linux。做WEB開發的經典組合?WAMP,LAMP基本都是開源軟件。
-
入門簡單,用戶只需要關注應用,開發成本低。
-
支持的大多數主流數據庫。MySQL,oracle,Redis等
7. php初體驗
webstorm對于php的支持并不友好,沒有高亮顯示,但是也支持代碼提示,功能比較微弱,如果需要專業的提示和高亮,建議使用vsCode。
<?phpecho "hello world"; ?>輸入中文亂碼問題:如果使用echo輸出中文,會亂碼。
在php的語法中,末尾必須加分號,不然就報錯了(最后一行可以不加分號)
<?php//content-Type:text/html;返回內容是一個HTML文檔文本//charset=utf-8 設置編碼集header("content-Type:text/html;charset=utf-8");echo "hello world";echo "<br/>";echo "大家好,我是鵬鵬"; ?>8. 變量
php是一門弱類型語法,變量的類型可以隨意改變。變量其實就是存儲數據的容器 。
8.1 變量的命名規則
//1. 不需要關鍵字進行聲明,變量在第一次賦值的時候被創建。 //2. 必須以$符號開始 //3. $后面的命名規則與js的變量命名規則一致。 $name = "鵬鵬"; echo $name;8.2 刪除變量
銷毀指定的變量 :
unset($var);8.3? 判斷變量是否設置值
bool isset($var)變量未設置或者設置為null,返回false(認為變量沒有設置)。其余情況全部為true。一般用來判斷變量是否設置,因為變量未設置,無法直接使用。(變量先賦值,再使用!)?
8.4 判斷變量是否為空
bool empty($var)判斷變量是否為空。PHP中認為變量的值為:""、0、"0"、NULL、FALSE、[]時,變量雖然賦值了,但是無實際的意義。為空。
9. 數據類型
9.1 簡單數據類型
字符串
$str = "鵬鵬"; echo $str;整數
$num = 100; echo $num;浮點型
$float = 11.11; echo $float;布爾類型
$flag = true; //當布爾類型值為true時,輸出1 echo $flag; $flag = false; //當布爾類型為false時,輸出空字符串 echo $flag;字符串連接符
//1. 在php中,+號只有算數的功能,并不能拼串 //2. 在php中,拼串使用. $name = "鵬鵬"; echo "大家好,我是" . $name . ",今年18歲";php中的單引號與雙引號
//1. 字符串的定義可以使用單引號,也可以使用雙引號 $name = "鵬鵬"; $desc = '很帥';//2. 雙引號可以解析變量 //3. 單引號的性能會高于雙引號(了解)$str = '$name 很帥';//$name 很帥 echo $str;$str = "$name 很帥";//鵬鵬 很帥 echo $str;9.2 數組
在php中,數組分為兩種,索引數組和關聯數組
計算數組長度的方法: count(數組名);
索引數組(類似與JS中的數組)
$arr = array("張飛","趙云","馬超"); echo $arr;//echo只能打印基本數據類型 echo $arr[0];//張飛關聯數組(類似與JS中的對象)
//屬性名必須用引號引起來 $arr = array("name"=>"zhangsan", "age"=>18); echo $arr["name"];?輸出語句
//1. echo 輸出簡單數據類型 //2. print_r 輸出數據結構,一般用于輸出復雜類型。 print_r($arr);//print_r是一個函數,不要忘記小括號 //3. var_dump 輸出完整的數據結構,包括類型,一般用于精準調試 var_dump($arr);二維數組
數組中的每個元素又是一個數組
二維數組的存取元素,需要兩次訪問,依次確定行和列$arr[x][y];
//索引數組$arr=[[1,2,3],[4,5,6],[7,8,9]]; //取值echo $arr[2][2];//存儲一個人信息$info=["name"=>"zs","age"=>100];//存儲一個班信息$infos=[["name"=>"zs","age"=>100],["name"=>"ls","age"=>100],["name"=>"ww","age"=>100]];//取值echo $infos[1]["name"];9.3 對象(了解)
在php以及其他高級語言中,都有類的概念,表示一類對象,跟js中構造函數類似。
//定義一個類(類似js的構造函數) class Person {public $name = "小明";public $age = 12;private $sex = "男"; }$zs = new Person; print_r($zs);//打印對象的結構信息 echo $zs->name;//對象中取值用 -> echo $zs->age; echo $zs->sex;//私有屬性,無法獲取10. 語句
10.1 判斷語句
基本上來說,所有語言的if..else語法都是一樣
$age = 17; if ($age >= 18) {echo "終于可以看電影了,嘿嘿嘿"; } else {echo "哎,還是回家學習吧"; }10.2?循環語句
遍歷索引數組
$arr = array("張三", "李四", "王五", "趙六", "田七", "王八"); //獲取數組的長度: count($arr) for($i = 0; $i < count($arr); $i++) {echo $arr[$i];echo "<br>"; }遍歷關聯數組
//遍歷關聯數組 $arr = array("name"=>"zs","age"=>18,"sex"=>20 ); foreach($arr as $key => $value) {echo $key . "=" . $value . "<br>"; }11. 函數
<?phpheader("content-Type:text/html;charset=utf-8");//php中函數的語法與js中函數的語法基本一樣,不同點在于//1. 函數名大小寫不敏感//2. 函數的參數可以設置默認值function sayHello ($name="周杰倫") {echo "大家好,我是$name";echo "<br>";}sayHello();//不傳參數,會使用默認值sayHello("鵬鵬");//傳參數,默認值不生效 ?>12. 常量
常量的定義
? 腳本執行周期內,值不會發生改變的量。常量不可以修改及刪除。英文為:constant
語法
define(常量名,常量值); define('VERSION','1.2.0'); //常量默認全部字母大寫 define('PI',3.1415926); echo PI; //使用時直接使用常量名-
常量默認區分大小寫。
-
按照開發慣例,常量名推薦全部字母大寫。
-
常量不可以重復定義及修改數據。
13. PHP內置函數
數學函數
?
-
max(),min() 分別返回一組數的最大值及最小值;
-
abs() 返回絕對值。
-
floor() 向下取整。
-
ceil() 向上取整。
-
round() 四舍五入。
-
rand()? 返回隨機數,可以取到兩端的值。
日期函數
-
time() 返回當前的 時間戳(1970到現在的時間的秒數)
-
date(format,time) 格式化一個本地時間或日期
格式:Y(年) m(月) d(日) H(時) i(分) s秒
默認時區會不太正確, 我們在東八區, 比0時區會多八小時
PRC: 中華人民共和國?
字符串函數
-
str_replace(查找的值,替換的值,執行替換操作的字符) 字符串替換
-
trim(字符串); 去除首尾空白字符
-
explode(分割符,執行分割的字符串); 使用一個字符串分割另一個字符串
-
implode(連接符,執行連接的數組); 將數組根據連接符拼接成字符串
-
substr( 字符串,起始索引,截取長度 ); ?截取字符串
-
strchr(字符串,標識字符); 從左向右找標識字符,返回該字符后全部字符(包括該字符)
-
strrchr(字符串,標識字符); 從右向左找標識字符,返回該字符后全部字符(包括該字符
總結
- 上一篇: 车载以太网协议的架构
- 下一篇: 软件工程师薪水_13个薪水最高的技术工作