php學習筆記之基礎知識,php學習筆記_PHP教程

來源:互聯網
上載者:User

php學習筆記之基礎知識,php學習筆記


php學習至今一年有餘,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。

php基礎部分

PHP 輸出文本的基礎指令:echoprint

echo和print的區別

echo是PHP語句, printprint_r是函數,語句沒有傳回值,函數可以有傳回值(即便沒有用)

echo 輸出一個或者多個字串。
print 只能列印出簡單類型變數的值(如int,string)
print_r 可以列印出複雜類型變數的值(如數組,對象)

var_dump和print_r的區別

var_dump返回運算式的類型和值,而print_r僅返回結果,相比調試代碼使用var_dump更便於閱讀。

變數

變數用於儲存值,比如數字、文本字串或數組。PHP 中的所有變數都是以 $ 符號開始的。
PHP 變數名稱對大小寫敏感!

PHP 有三種不同的變數範圍:

local(局部)
global(全域)
static(靜態)

函數之外聲明的變數擁有 Global 範圍,只能在函數以外進行訪問。

函數內部聲明的變數擁有 LOCAL 範圍,只能在函數內部進行訪問。

global 關鍵詞用於訪問函數內的全域變數。

PHP static 關鍵詞

通常,當函數完成/執行後,會刪除所有變數。不過,有時我需要不刪除某個局部變數。實現這一點需要更進一步的工作。

要完成這一點,請在您首次聲明變數時使用 static 關鍵詞:

<?php    
function myTest() {
static $x=-1;
echo $x;
$x--;
}
myTest();//-1
echo "
";
myTest();//-2
echo "
";
myTest();//-3
?>

php類型

php類型:**PHP 支援八種原始類型。** 

布爾型

要指定一個布爾值,使用關鍵字 TRUE 或 FALSE。兩個都是大小寫不敏感的。

整型

我們可以使用(int)來將小數強制類型轉換成整數。

<?php
var_dump((int)(26/3));//int(8)
?>

數組

php中有三種數組:

索引數組:就是下標是順序整數作為作為索引(比如第幾排第幾列)$class[5]
關聯陣列:就是下標是字串作為索引(比如名字)$class2["zhangsan"]
多維陣列 - 包含一個或多個數組的數組

下標要嘛是整數,要麼是字串。

<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// 自 PHP 5.4 起
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>

數組單元可以通過 array[key] 文法來訪問。
Note: 這並不意味著總是給鍵名加上引號。用不著給鍵名為常量或變數的加上引號,否則會使 PHP 不能解析它們。

數組運算子例子名稱結果$a + $b 聯合 $a 和 $b 的聯合$a == $b 相等 如果 $a 和 $b 具有相同的鍵/值對則為 TRUE$a === $b 全等 如果 $a 和 $b 具有相同的鍵/值對並且順序和類型都相同則為 TRUE$a != $b 不等 如果 $a 不等於 $b 則為 TRUE$a <> $b 不等 如果 $a 不等於 $b 則為 TRUE$a !== $b 不全等 如果 $a 不全等於 $b 則為 TRUE

+ 運算子把右邊的數組元素附加到左邊的數組後面,兩個數組中都有的鍵名,則只用左邊數組中的,右邊的被忽略。

對象

要初始化一個對象,用 new 語句將對象執行個體到一個變數中。

常用函數

strlen() 函數用於計算字串的長度。
strpos() 函數用於在字串內檢索一段字串或一個字元。

常量

可以用 define() 函數來定義常量。一個常量一旦被定義,就不能再改變或者取消定義。
常用的魔術常量:

定義常量例子:

<?php
define("poems" , "Homeric epic");
echo poems ;//outputs "Homeric epic"
?>

php字串運算子

在 PHP 中,只有一個字串運算子。
共置運算子 (.) 用於把兩個字串值串連起來。如:echo "a= ".$a."
";

左邊將字串文字"a="與變數$a的值串連,第二處是與分行符號"
"
串連

php函數

函數只有在被調用時才會被執行,這點和js是一樣的,同樣,函數定義也是以function關鍵字開頭的。

<?php
function sum($x,$y){
$z=$x + $y;
return $z;
}
echo "-2+10= ".sum(-2,10);//outputs "-2+10=8"
?>

當沒有return語句時,以上將會變成"-2+10=";

流程式控制制

在這裡,只講下foreach語句。

foreach語句遍曆輸出數組:
文法:

foreach (array_expression as $value){ statement};foreach (array_expression as $key => $value){ statement};

參數array_expression是指定要遍曆的數組,$value是數組的值

<?php
$actors [0] ="Marry";
$actors [1] ="Lorry";
$actors [2] = "mike";
foreach ($actors as $values){
echo "Name:$values
";
}
?>

以上代碼將輸出:
Name:Marry
Name:Lorry
Name:mike

兩個重要的魔術方法

    1. __set( )方法:這個方法用來為私人成員屬性設定值的,有兩個參數,第一個參數為你  要為設定值的屬性名稱,第二個參數是要給屬性設定的值,沒有傳回值。    2. __get()方法:這個方法用來擷取私人成員屬性值的,有一個參數,參數傳入你要擷取的成員屬性的名稱,返回擷取的屬性值,這個方法不用我們手工的去調用

php中方法不區分大小寫

require(dirname(__FILE__).'/global.php'); //引入通用檔案require(dirname(__FILE__).'/config.ini.php'); //引入基本設定檔

對象運算子和雙冒號運算子

在類的成員方法裡面,可以用 ->(對象運算子):$this->property(其中 property 是該屬性名稱)這種方式來訪問非靜態屬性。
靜態屬性則是用 ::(雙冒號):self::$property 來訪問。

=>和->

=>數群組成員訪問符號,->對象成員訪問符號;
$this->$name=$value:將當前類的name變數的值設為$value;
$this代表了類本身,->是訪問其類成員的操作符
雙冒號運算子(::)類名::靜態屬性/方法
::”用來調用類中靜態屬性和方法

include():包含外部檔案,文法格式為 include(string filename);
require():會輸出錯誤資訊,終止指令碼
include_once():多次調用相同檔案時,程式只會調用一次
require_once():先檢查檔案是否在其他地方被調用過
array_pop():擷取並返回數組中的最後一個元素
count():統計數組中的元素個數
array_search():擷取數組中元素的鍵名
$array_keys():擷取數組中重複元素的所有鍵名

單引號和雙引號

PHP把單引號中的資料視為一般字元串,不再處理。而雙引號還要對其中的字串進行處理

get和post

$_GET[ ]和$_POST[ ]全域數組:分別用來接收GET和POST方法傳遞到當前頁面的資料。“[ ]”裡面是name.

php參數傳遞常用的方法有3種:$_POST[ ]、$_GET[ ]、$_SESSION[ ],分別用於擷取表單、URL與Session變數的值。

表單提交中get和post方式的區別歸納如下幾點:

GET是從伺服器上擷取資料,POST是向伺服器傳送資料。
GET 是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。POST是通過HTTP POST機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
對於GET方式,伺服器端用Request.QueryString擷取變數的值,對於POST方式,伺服器端用Request.Form擷取提交的資料。
GET傳送的資料量較小,不能大於2KB(這主要是因為受URL長度限制)。POST傳送的資料量較大,一般被預設為不受限制。但理論上,限制取決於伺服器的處理能力。
GET 安全性較低,POST安全性較高。因為GET在傳輸過程,資料被放在請求的URL中,而如今現有的很多伺服器、Proxy 伺服器或者使用者代理程式都會將請求URL記 錄到記錄檔中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一 同顯示在使用者面前。POST的所有操作對使用者來說都是不可見的。

在FORM提交的時候,如果不指定Method,則預設為 GET請求(.net預設是POST),Form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣發送,但空格轉換為“+” 號,其它符號轉換為%XX,其中XX為該符號以16進位表示的ASCII(或ISO Latin-1)值。GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在實體資料中;GET方式提交的資料最多隻能有2048位元組,而POST則沒有此限制。POST傳遞的參數在doc裡,也就http協議所傳遞的文本,接受時再解析參數部分。獲得參數。一般用POST比較好。POST提交資料是隱式的,GET是通過在url裡面傳遞的,用來傳遞一些不需要保密的資料,GET是通過在URL裡傳遞參數,POST不是。

1.GET請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,參數之間以&相連

2.GET方式提交的資料最多隻能是1024位元組,理論上POST沒有限制,可傳較大量的資料,IIS4中最大為80KB,IIS5中為100KB

HTTP狀態代碼

cookie和session區別

cookie的內容主要包括:名字,值,到期時間,路徑和域。路徑與域一起構成cookie的作用範圍。若不設定到期時間,則表示這
個cookie的生命期為瀏覽器會話期間,關閉瀏覽器視窗,cookie就消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。
會話cookie一般不儲存在硬碟上而是儲存在記憶體裡,當然這種行為並不是規範規定的。若設定了到期時間,瀏覽器就會把cookie
儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效直到超過設定的到期時間。

當程式需要為某個用戶端的請求建立一個session時,伺服器首先檢查這個用戶端的請求裡是否已包含了一個session標識
(稱為session id),如果已包含則說明以前已經為此用戶端建立過session,伺服器就按照session id把這個session檢索出來
使用(檢索不到,會建立一個),如果用戶端請求不包含session id,則為此用戶端建立一個session並且產生一個與此session相
關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字串,這個session id將被在本次響應
中返回給用戶端儲存。儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識發送給
伺服器。
1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能
考慮到減輕伺服器效能方面,應當使用COOKIE。
4、單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個網站最多儲存20個cookie。
5、所以個人建議:
將登陸資訊等重要訊息存放為SESSION
其他資訊如果需要保留,可以放在COOKIE中

php代碼規範

1.變數賦值必須保持相等間距和排列

2.每行結尾不允許有多餘的空格

3.確保檔案的命名和調用大小寫一致,是由於類Unix系統上面,對大小寫是敏感的

4.方法名只允許由字母組成,底線是不允許的,首字母要小寫,其後每個單詞首字母要大寫

5.屬性的命名只允許由字母組成,底線是不允許的⋯⋯

6.對於對象成員的訪問,我們必須始終使用“get"和"set"方法

7.當類成員方法被聲明為private時,必須以雙底線"__"開頭;被聲明為protected時,必須以單底線"_"開頭;聲明為public的成員屬性則在任何時候都不允許含有底線。

8.如果我們需要把一些經常使用的方法定義為全域函數,那麼應該把它們以靜態(static)的形式定義在類中

9.函數的命名使用小寫和底線,應該能夠描述清楚該函數的功能。

10.Boolean值和null值都採用小寫。

11.當一個字串是純文字組成的時候(即不含有變數),則必須總是以單引號(')作為定界符

12.使用array型別宣告關聯陣列的時候,應將它分成多行,保證每行的鍵與值的對齊

13.類中所有代碼都必須用四個空格進行縮排

14.不允許用var來聲明變數,類成員變數必須以private,protected和public來聲明。通常用get和set方法來訪問類成員。

15.方法必須總是用private,protected或者public來聲明其範圍

16.在函數或方法名與參數括弧之間不允許出現多餘的空格

http://www.bkjia.com/PHPjc/908173.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/908173.htmlTechArticlephp學習筆記之基礎知識,php學習筆記 php學習至今一年有餘,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。 php基礎部分 PHP 輸出文本的...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.