PHP 超級全局變量php
在函數內調用函數外定義的全局變量,咱們須要在函數中的變量前加上 global 關鍵字:html
<?php $x=5; $y=10; function myTest(){ global $x,$y; $y=$x+$y; } myTest(); echo $y; // 輸出 15 ?>
PHP 將全部全局變量存儲在一個名爲 $GLOBALS[index] 的數組中。 index 保存變量的名稱。這個數組能夠在函數內部訪問,也能夠直接用來更新全局變量。mysql
上面的實例能夠寫成這樣:sql
function myTest(){ $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; }
訪問: http://www.runoob.com/php/php-superglobals.html數據庫
常見輸出語句express
echo(): 能夠一次輸出多個值,多個值之間用逗號分隔。echo是語言結構(language construct),而並非真正的函數,所以不能做爲表達式的一部分使用,能夠不加括號。輸出的速度比 print 快。數組
print(): 函數print()打印一個值(它的參數),若是字符串成功顯示則返回true,不然返回false。能夠不加括號。服務器
print_r(): 能夠把字符串和數字簡單地打印出來,而數組則以括起來的鍵和值得列表形式顯示,並以Array開頭。但print_r()輸出布爾值和NULL的結果沒有意義,由於都是打印"\n"。所以用var_dump()函數更適合調試。cookie
var_dump(): 判斷一個變量的類型與長度,並輸出變量的數值,若是變量有值輸的是變量的值並回返數據類型。此函數顯示關於一個或多個表達式的結構信息,包括表達式的類型與值。數組將遞歸展開值,經過縮進顯示其結構。session
數據類型
String(字符串), Integer(整型), Float(浮點型), Boolean(布爾型), Array(數組), Object(對象), NULL(空值)。
PHP 常量
一個常量由英文字母、下劃線、和數字組成,但數字不能做爲首字母出現。 (常量名不須要加 $ 修飾符)。
注意: 常量在整個腳本中均可以使用。
設置常量,使用 define() 函數,函數語法以下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
該函數有三個參數:
也能夠用
const constant = '常量值';
const 和 define 定義常量的區別
使用const使得代碼簡單易讀,const自己就是一個語言結構,而define是一個函數。另外const在編譯時要比define快不少。
PHP 字符串相關
echo strlen("中文字符"); // 輸出 12輸出結果爲 12,由於一箇中文佔 3 個字符數。 能夠使用 mb_strlen 設置指定編碼輸出中文字符個數:
echo mb_strlen("中文字符",'utf-8'); // 輸出 4
mb_substr($str, 0, 1, 'gbk'); //
更多string 函數訪問:http://www.runoob.com/php/php-ref-string.html
PHP 關聯數組
兩種建立關聯數組的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43";
遍歷並打印關聯數組中的全部值,能夠使用 foreach 循環
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value){ echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
foreach 兩種語法格式
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
數組參考手冊:http://www.runoob.com/php/php-ref-array.html
魔術變量
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
以上例程會輸出:
Hello World!
從基類繼承的成員被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆蓋。其行爲 MyHelloWorld 類中定義的方法一致。優先順序是當前類中的方法會覆蓋 trait 方法,而 trait 方法又覆蓋了基類中的方法。
PHP 命名空間
能夠解決如下兩類問題:
建議使用下面的大括號形式的語法
<?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace AnotherProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } ?>
訪問: http://www.runoob.com/php/php-namespace.html
PHP 面向對象
主要三個特性: 封裝, 繼承,多態
定義:
class Site { /* 成員變量 */ var $url; var $title; /* 構造函數 */ function __construct( $par1, $par2 ) { $this->url = $par1; $this->title = $par2; } /* 成員函數 */ function setUrl($par){ $this->url = $par; } /* 析構函數 */ function __destruct() { print "銷燬 " . $this->name . "\n"; } }
調用
$runoob = new Site; $runoob->setUrl( 'www.runoob.com' ); // 或者 $runoob = new Site('www.runoob.com', '菜鳥教程');
繼承: PHP 使用關鍵字 extends 來繼承一個類,PHP 不支持多繼承
注意: 若是子類重寫了父類的公有方法,並定義爲私有,則會報錯
若是子類重寫了父類的私有方法,並定義爲公有,則可正常運行
Final 關鍵字
PHP 5 新增了一個 final 關鍵字。若是父類中的方法被聲明爲 final,則子類沒法覆蓋該方法。若是一個類被聲明爲 final,則不能被繼承。
調用父類構造方法
PHP 不會在子類的構造方法中自動的調用父類的構造方法。要執行父類的構造方法,須要在子類的構造方法中調用 parent::__construct() 。
class SubClass extends BaseClass { function __construct() { parent::__construct(); // 子類構造方法不能自動調用父類的構造方法 print "SubClass 類中構造方法" . PHP_EOL; } }
PHP 重載
php是弱類型語言,並無像JAVA這種強類型語言同樣有重載。
重載通常來講就是擁有相同的函數名或方法名,可是參數列表卻不一樣(包括參數個數和參數類型)。 可是沒有並不意味着不能實現。php 有四種機制能夠實現重載。
參考: http://blog.csdn.net/whd526/article/details/70239791
官網參考: http://php.net/manual/zh/language.oop5.overloading.php
PHP 包含文件
include 和 require 除了處理錯誤的方式不一樣以外,在其餘方面都是相同的:
COOKIE 和 SESSION
Session 的工做機制是:爲每一個訪客建立一個惟一的 id (UID),並基於這個 UID 來存儲變量。UID 存儲在 cookie 中,或者經過 URL 進行傳導。
在生成的 COOKIE 中會存在 key 爲 PHPSESSID 的值,該值與 session_id() 一致,可經過該 cookie 值獲取相關 session。
$sessionId = $_COOKIE['PHPSESSID']; session_id($sessionId); session_start(); var_dump($_SESSION);
HTTP 狀態碼
常見的HTTP狀態碼:
更多: http://www.runoob.com/http/http-status-codes.html
@ 運算符屏蔽錯誤提示
經常使用函數
mysqli_select_db($con,"test"); // 選擇數據庫 mysqli_set_charset($con, "utf8"); // 設置編碼,防止中文亂碼 isset()函數 通常用來檢測變量是否設置