三小時入門PHP5語法基礎

PHP是什麼?

PHP是一門後端動態解釋型計算機高級語言,通常用來編寫或者生成動態網頁,主要負責數據的處理與渲染。(這裏是指用PHP嵌入網頁裏面的形式,如今能夠直接用一些JS的框架去渲染網頁數據了,PHP主要用來作數據處理)php

在學習PHP以前,你須要瞭解HTML,最好有C語言或者C++,Python等其餘高級語言基礎html

PHP通常須要與web服務器軟件一塊兒使用,如Apache,Nginx,IIS這些服務器軟件,固然這些軟件首先須要配置好PHP環境。推薦使用phpstudy這個軟件在你的電腦上建立本身的PHP學習環境,點擊下載phpstudy,若是連接失效請到http://www.phpstudy.net/自行搜索下載python

怎麼使用phpstudy

推薦一個更加方便的集成環境工具,laragon.exe能夠很方便的部署php開發環境而且可以自動完成虛擬主機的配置下載連接web

1.下載完成後解壓到D:\phpstudy\目錄下數據庫

2.打開phpstudy這個軟件,會自動開啓Apache的web服務和MySQL數據庫服務,若是都爲綠色的點表示服務開啓成功 編程

image.png

3.在瀏覽器地址欄輸入localhost按下回車,出現下面這個網頁表示安裝成功 後端

image.png

4.在D:\phpstudy\www\目錄裏面放入你寫的PHP文件,如我放入一個叫作test.php的文件,該文件內容以下面HelloWorld標題代碼所示數組

5.在瀏覽器地址欄輸入localhost/test.php,按下回車鍵便可打開該網頁,輸出了Hello World 瀏覽器

image.png

Hello World

像下面這樣直接嵌入網頁中輸出HelloWorld,直接用echo指令輸出到網頁上服務器

<!DOCTYPE html>
<html lang="zh-cn">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <?php
  echo "Hello World";
  ?>
</body>
</html>
複製代碼

這個文件必須保存爲.php文件,不能保存爲.html文件,不然裏面的 這一段不會被解析

能夠看出,在php文件裏面含有html代碼時PHP的代碼片斷以 「<?php 」 開始以 「 ?> 」結束,若是php文件裏面不含任何HTML的代碼,則只須要寫 <?php

註釋

跟大多數編程語言同樣

// 用在單行註釋

/* 和 */ 用在多行註釋

變量

用$後面跟上變量名初始化和使用變量,如:

<?php
$x=5;
$y=6;
$s="Hello World!";
$z=$x+$y;
echo $z.$s;   //輸出11Hello World
?>
複製代碼

能夠看出PHP是一種弱類型的語言,用$聲明的變量既能夠是數字也能夠是字符串等其餘的數據類型,其中字符串的鏈接符是用" . ",能夠將多個字符鏈接起來,如

<?php
$x = "Hello";
$y = 'World';
$z = $x.$y;
echo $z;   //輸出HelloWorld
複製代碼

細心的朋友會注意到$y = 'World'; 這一句用的是單引號,其實PHP裏面單引號和雙引號均可以表示字符串,可是必需要成對出現。

PHP的語句和變量是嚴格區分大小寫的,神奇的是,PHP還有不少特殊的全局變量,對於程序的編寫有很大的便利,將在後面說明

常量

PHP中的常量使用 define() 函數,函數語法以下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
複製代碼

其中,

name : 常量名(不須要加$符號)

value : 常量的值(能夠爲任意數據類型)

case_insensitive: 默認爲false區分大小寫,若爲true則不區分常量名的大小寫 如:

<?php
define("PI",3.14);
$r = 2;
echo PI*$r*$r;    //輸出 12.56
複製代碼

數據類型

PHP中有以下幾種數據類型: String(字符串), Integer(整型), Float(浮點型), Boolean(布爾型), Array(數組), Object(對象), NULL(空值) 前三種前面已經使用過了,簡單介紹下字符串和後面幾種,關於對象後面再詳細說明:

字符串

經常使用字符串的處理函數

strlen() : 獲取字符串長度

$s = "Hello World!";
echo strlen($s);   //輸出12
複製代碼

特別的,對於中文來講

<?php
echo strlen("你好世界");   // 輸出 12
複製代碼

由於在默認編碼下一個中文佔3個字符數,可使用mb_strlen()指定編碼輸出

<?php
echo mb_strlen("你好世界","utf-8");   // 輸出 4
複製代碼

strpos() : 在字符串內查找一個字符或一段指定的文本。 若是在字符串中找到匹配,該函數會返回第一個匹配的字符位置。若是未找到匹配,則返回 false。

<?php 
echo strpos("Hello world!","world");  // 輸出6
複製代碼

md5() : 計算字符串的 MD5 散列,一般用於簡單加密

<?php
echo md5("password");   //輸出5f4dcc3b5aa765d61d8327deb882cf99
複製代碼

布爾型

true 和 false 兩個值 例如:

<?php
$x = true;
var_dump($x);    //輸出bool(true) 
複製代碼

var_dump() 函數返回變量的數據類型和值

數組

PHP中用函數 array() 來建立數組,其中有索引數組,關聯數組,多維數據 索引數組(用從0開始的下標表示數組裏面對應的值)

<?php
$student = array("Kevin","Bob","Tom");
echo $student[0]." Love ".$student[2];    //輸出Kevin Love Tom
複製代碼

可使用函數count(student) 獲取數組student的長度爲3

關聯數組 (含有鍵值對" key => value "的數組,每一個value值都有它的key值)

<?php
$age = array("Kevin"=>18,"Bob"=>26,"Tom"=>17);
echo $age['Kevin'];    //輸出18
複製代碼

多維數組

<?php
$sites = array 
( 
    "runoob"=>array 
    ( 
        "百度", 
        "http://www.baidu.com" 
    ), 
    "google"=>array 
    ( 
        "Google 搜索", 
        "http://www.google.com" 
    ), 
    "taobao"=>array 
    ( 
        "淘寶", 
        "http://www.taobao.com" 
    ) 
); 
echo $sites['taobao'][1];    //輸出http://www.taobao.com
複製代碼

對於數組的排序,能夠看下這個教程 www.runoob.com/php/php-arr…

空值

NULL 值表示變量沒有值。能夠經過將變量賦值爲空值來清空變量數據。

運算符

PHP裏面的不少運算符其實跟C語言同樣的,因此沒有不少要講的,其中注意一下下面這些運算符:

運算符 做用說明
. 點號,並置運算符,用於鏈接字符串
=== 絕對等於,用於判斷,表示兩個變量類型和值都相等
+ 即表示數學上算術相加,也能夠用在兩個數組鏈接

對運算符不是很瞭解的能夠看看這個教程:www.runoob.com/php/php-ope…

邏輯語句

判斷語句

if 語句 - 在條件成立時執行代碼 if...else 語句 - 在條件成立時執行一塊代碼,條件不成立時執行另外一塊代碼 if...elseif....else 語句 - 在若干條件之一成立時執行一個代碼塊 switch 語句 - 在若干條件之一成立時執行一個代碼塊 特別地,要記得在switch語句裏面用break;跳出每個選項。

循環語句

像C語言同樣的循環 while - 只要指定的條件成立,則循環執行代碼塊 do...while - 首先執行一次代碼塊,而後在指定的條件成立時重複這個循環 for - 循環執行代碼塊指定的次數 着重說一下PHP特有的foreach循環: foreach主要是用來遍歷數組的,以下所示:

<?php
$age = array("Kevin"=>18,"Bob"=>26,"Tom"=>17);
foreach ($age as $name=>$a )
{
  echo $name."的年齡爲".$a."<br>";
}
/*輸出 Kevin的年齡爲18 Bob的年齡爲26 Tom的年齡爲17 */
複製代碼

函數

PHP像這樣聲明一個函數

<?php
function 函數名(參數列表) {
    // 要執行的代碼
}
複製代碼

參數能夠有默認值,函數的返回值用return直接返回,能夠返回任意數據類型的返回值

函數的變量做用域: 如在下面的程序中

<?php 
$x=5; // 全局變量 
function myTest() { 
    $y=10; // 局部變量 
    echo "變量 x 爲: $x";   //會報錯Notice: Undefined variable: x in D:\phpstudy\WWW\test.php on line 6
    echo "<br>";          //換行
    echo "變量 y 爲: $y";   //輸出變量y爲:5
}  
myTest(); 
複製代碼

爲何第6行代碼會報錯呢?由於在函數內部裏面是不能直接訪問全局變量x的,函數內部初始化的變量y也只能在函數內部起做用,若是須要在函數內使用全局變量,則須要先在函數內聲明,使用global指令

<?php 
$x=5; // 全局變量 
function myTest() { 
    global $x;     //聲明全局變量$x
    $y=10; // 局部變量 
    echo "變量 x 爲: $x";   //輸出變量x爲:5
    echo "<br>";    //換行
    echo "變量 y 爲: $y";   //輸出變量y爲:5
}  
myTest(); 
複製代碼

PHP的特殊變量

魔術變量

__FILE__ : 文件的完整路徑和文件名。 __LINE__ : 文本中的當前行號。 __DIR__ :文件所在當前目錄。 __FUNCTION__:用在函數裏面,返回函數的名字。 __CLASS__ :用在類裏面,返回類的名字。 __NAMESPACE__:返回當前命名空間的名字。

超級全局變量

該內容詳見教程:www.runoob.com/php/php-sup…

$GLOBALS: 是一個關聯數組,任何聲明的全局變量都會保存到這個數組裏面去,該數組的key值是全局變量的名字,value值是全局變量的值

$_SERVER:是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數組。這個數組中的項目由Web服務器建立。不能保證每一個服務器都提供所有項目;服務器可能會忽略一些,或者提供一些沒有在這裏列舉出來的項目。

$_REQUEST:用於收集HTML表單提交的數據。

$_POST:收集表單經過POST方式上傳的數據(在HTML裏面指定form的method= "POST")

$_GET:一樣被普遍應用於收集表單數據,也用於URL發送的數據

命名空間

命名空間是爲了不與PHP內部的類/變量/函數或者第三方類庫名字衝突引入的至關於別名的東西,經過使用不一樣的命名空間和設置別名能夠避免這些衝突。

聲明命名空間: namespace 名稱; 使用命名空間: use 名稱 as 別名; 其中「as 別名」也能夠省略。

通常放到PHP代碼文件的首行。 也能夠在一個文件裏面使用多個命名空間,用 { } 將不一樣的命名空間分開 如:

<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // 全局代碼
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
複製代碼

面向對象

學過C++或者python,Java的話都知道什麼是面向對象編程。

聲明類

<?php
class 類名{
    public $變量名;    //php中的變量的須要加上修飾符
    public function 函數名(){
          //函數的內容
    }
}
複製代碼

每一個類有一個$this變量,用來表明對象自己,能夠經過$this對象調用類的變量或方法。 建立對象使用new關鍵字,以下所示:

<?php
class Student {
    function __construct( $name, $age ) {      //構造函數
       $this->name = $name;
       $this->age = $age;
    }
}
// 實例化對象
$xiaoming = new Student("xiaoming",18);
echo $xiaoming->age;        //輸出18
複製代碼

繼承

使用關鍵字extends表明繼承,如子類繼承父類的形式以下:

<?php
class Child extends Parent {
   // 代碼部分
}
複製代碼

訪問控制

public(公有):公有的類成員能夠在任何地方被訪問。

protected(受保護):受保護的類成員則能夠被其自身以及其子類和父類訪問。

private(私有):私有的類成員則只能被其定義所在的類訪問。

抽象類

任何一個類,若是它裏面至少有一個方法是被聲明爲抽象的,那麼這個類就必須被聲明爲抽象的。 定義爲抽象的類不能被實例化。使用關鍵字abstract聲明類,以下

<?php
abstract class ClassName {
    //抽象類的內容
}
複製代碼

Static 關鍵字

聲明類屬性或方法爲 static(靜態),就能夠不實例化類而直接訪問。 靜態屬性不能經過一個類已實例化的對象來訪問(但靜態方法能夠)。 因爲靜態方法不須要經過對象便可調用,因此僞變量 $this 在靜態方法中不可用。 靜態屬性不能夠由對象經過 -> 操做符來訪問。

關於PHP的面向對象編程還有不少須要注意的地方,可是可能簡單的網頁後端編程裏面須要掌握的語法基礎就是這些了,能夠多看幾遍「菜鳥教程」的PHP教程:www.runoob.com/php/php-tut…

OK到這裏基本上你已經瞭解了PHP的語法基礎,而後你須要學習的就是PHP的一些標準庫的運用了,好比文件操做,GD圖形庫(製做圖片驗證碼),用PHP進行MySQL數據庫操做等。

爲方便網站服務器後端開發,你能夠嘗試去了解一下PHP的開發框架,好比國內流行的ThinkPHP5,不少特性的Laravel,以及不少人使用的Yii

相關文章
相關標籤/搜索