本文目錄一覽:
求PHP高級教程(提高階層次)
學習php:
學習任何一種編程語言都需要長期的堅持和不懈的努力才可以獲得成功!
三個星期看了兩部教程? 即使你有很好的語言基礎,這也只能用走馬觀花來形容你的學習過程。
總希望在短期之內讓自己的知識量有一個質的提升和飛躍,除了天才和務實的人,沒有其它人做得到。
php100和孫仲岳的教程只能算是入門教程,不過,要想把他們二位所教授的知識消化好,至少需要3-5個月的時間,即使你有很好的語言基礎也不例外,因為這背後需要你做大量的實踐方可真正理解、吃透php語言。
就比如說php語言中的單引號和雙引號之間的區別、它們之間各種組合的特異性等,我相信如果你專門來對它進行實踐操作學習,沒有4-5個小時,就不要妄想了。然而,php語言中的單引和雙引和其它任何一門語言的用法都不相同。
你這種學習方式固然有自己的道理,首先走馬觀花看上大概,心中對php整體有個大概了解,然後再深入細緻學習就會從整體來考慮局部,使自己有一個大局觀,但是,這種學習方式的初期也就註定了你無法真正懂得這門語言,也就是說,至今為止,你無法真正完成一個像模像樣的網站。
php的提高更不是一門教程就能夠完全教授完全的,正如一樓所講,那些附屬類語言個個不可少,而且在這之外,還包括php zend,就拿這個php的一個加密分支來講,就不是三五個月可以玩下來的。
php知識的學習在效果的體現上,基本呈現餘切曲線的樣子,也就是說,起初會覺得進步如此之快,然而,學習越是深入,越是發覺前路漫漫,無盡兮!
php語言本身並沒有多麼神秘,但它的擴展能力強悍無匹,每一個擴展都夠任何一個編程學者研究上十天兩月,隨着時間的推移,現在的擴展幾乎遍布電腦個個領域,圖像、音頻、視頻、文字、統計等等,而這些擴展又都各自獨立,互不干擾交叉,相信只要你有精力,你永遠也學不完!
另外,網絡安全也同樣是一個編程者必知的知識,就比如APACHE模塊本身哪些版本存在內存泄漏,這些細小環節都是知識!匯聚之後才發現,它將是一片大海汪洋。
3個星期的學習就感覺它沒有前途?這麼說吧,騰訊、百度這些大公司都在招聘網絡安全負責人,就我最後講的安全一項分支,就可用掉你畢生時間去深入、去領會!
如果你真有野心,考個微軟認證工程師,你的工作還愁嗎?但認證工程師的背後,是多少辛苦和汗水。
推薦一本PHP高級教程
我是初學者,但是我可以給你推薦一個網站裡面有視頻教程,也有比較深入的高級編程討論,你不妨去看一看。
php高級教程
php高級教程
導語:php是it行業語言,也是一門較熱的網絡技術,下面就由我為大家介紹一下php高級教程,歡迎大家閱讀!
一、PHP- 多維數組:
$cars = array(
array(“huawei”,”12″,”11″),
array(“meizu”,”23″,”12″),
array(“iphone”,”12″,”4″)
);
$title = array(“手機總共有:”,”個,已經賣出去了”,”個!”);
for($i=0;$i{ for($j=0;$j { echo $cars[$i][$j]; echo $title[$j]; } echo ” “;}?
輸出:
huawei手機總共有:12個,已經賣出去了11個!
meizu手機總共有:23個,已經賣出去了12個!
iphone手機總共有:12個,已經賣出去了4個!
二、PHP 日期和時間
date() 函數的格式參數是必需的,它們規定如何格式化日期或時間。
下面列出了一些常用於日期的字符:
·d – 表示月里的某天(01-31) D-表示當前這天的英文星期簡寫
·m – 表示月(01-12) M-表示當前月的英文縮寫
·Y – 表示年(四位數) y-表示年(後兩位數)
·1 – 表示周里的某天 L-返回0
其他字符,比如 “/”,”.” 或 “-” 也可被 插入字符中,以增加其他格式。
echo”今天是 ” . date(“YYYY/m/d”) .” “; //2017201720172017/06/26 由此可見不能用js中yyyy-mm-dd的形式
echo”今天是 ” . date(“Y.m.d”) . ” “; //2017.06.26
echo”今天是 ” . date(“Y-M-D”) . ” “; //17-Jun-Mon
echo”今天是 ” . date(“l”) . ” “; //Monday 星期全稱
echo”今天是 ” . date(“L”) . ” “; //0
?
獲得簡單的時間
下面是常用於時間的字符:
date_default_timezone_set(“Asia/Shanghai”); //設置時區
echo date_default_timezone_get(oid);//獲取當前時區
·h – 帶有首位零的 12 小時小時格式 H-24小時格式
·i – 帶有首位零的分鐘 I-0
·s – 帶有首位零的秒(00 -59) S-返回th我也不知道是什麼鬼
·a – 小寫的午前和午後(am 或 pm) A-返回大寫格式:AM或PM
echo”現在是 ” . date(“h:i:sa”) . ” “; //現在是 02:15:44pm
echo”現在是 ” . date(“H:I:SA”) . ” “; //現在是 14:0:thPM
通過 PHP mktime() 創建日期
date() 函數中可選的時間戳參數規定時間戳。如果您未規定時間戳,將使用當前日期和時間
語法
mktime(hour,minute,second,month,day,year)
$d=mktime(9,12, 31, 6, 10, 215) ;
echo”創建日期是 ” . date(“Y-m-d h:i:sa”, $d) .” “; //在date方法裡面傳參則取的是參數中的時間,如果不傳的話則取的是當前時間
通過 PHP strtotime() 用字符串來創建日期
PHP strtotime() 函數用於把人類可讀的字符串轉換為Unix 時間。
$d=strtotime(“10:38pm April 15 2015”);
echo “創建日期是 ” . date(“Y-m-d h:i:sa”, $d);
如果輸入了它不能識別的字符串則保存為 1970-01-01 12:00:00am
計算兩個時間段內的時間所有的周六
$startdate = strtotime(“Saturday”);
$enddate = strtotime(“+6 weeks”,$startdate);
while ($startdate $enddate) {
echo date(“M d”, $startdate),” “;
$startdate = strtotime(“+1 week”, $startdate); //在$startdate基礎上加一個禮拜,你還可以加1天,1個月,1年
}
?
計算距離某一天還有多長時間
$d1=strtotime(“2017-7-30”);
$d2=ceil(($d1-time())/60/60/24);
echo “距離十二月三十一日還有:” . $d2 .” 天。”;
?
三、PHP Cookies
cookie 常用於識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發送 cookie。通過 PHP,您能夠創建並取回 cookie 的值。
創建cookie
setcookie() 函數用於設置 cookie。
注釋:setcookie() 函數必須位於
標籤之前。
語法
setcookie(name, value, expire, path, domain);
在下面的例子中,我們將創建名為 “user” 的 cookie,把為它賦值 “Alex Porter”。我們也規定了此 cookie 在一小時後過期:
setcookie(“user”, “Alex Porter”, time()+3600);
?
注釋:在發送 cookie 時,cookie 的值會自動進行 URL 編碼,在取回時進行自動解碼(為防止 URL 編碼,請使用setrawcookie() 取而代之)。
取回 Cookie 的值
PHP 的 $_COOKIE 變量用於取回cookie 的值。
// Print a cookie
echo $_COOKIE[“user”];
// A way to view all cookies
print_r($_COOKIE);
?
刪除 cookie當刪除 cookie 時,您應當使過期日期變更為過去的時間點。
// set the expiration date to one hour ago
setcookie(“user”, “”, time()-3600);
?
如果瀏覽器不支持 cookie 該怎麼辦?
如果您的應用程序涉及不支持cookie 的瀏覽器,就不得不採取其他方法在應用程序中從一張頁面向另一張頁面傳遞信息。一種方式是從表單傳遞數據(有關表單和用戶輸入的內容,稍早前我們已經在本教程中介紹過了)。
下面的表單在用戶單擊提交按鈕時向”welcome.php” 提交了用戶輸入:
Name:
Age:
取回”welcome.php” 中的值,就像這樣:
Welcome .
You are years old.
四、PHP Sessions
PHP Session 變量
當您運行一個應用程序時,您會打開它,做些更改,然後關閉它。這很像一次會話。計算機清楚你是誰。它知道你何時啟動應用程序,並在何時終止。但是在因特網上,存在一個問題:服務器不知道你是誰以及你做什麼,這是由於 HTTP 地址不能維持狀態。
通過在服務器上存儲用戶信息以便隨後使用,PHP session 解決了這個問題(比如用戶名稱、購買商品等)。不過,會話信息是臨時的,在用戶離開網站後將被刪除。如果您需要永久儲存信息,可以把數據存儲在數據庫中。
Session 的工作機制是:為每個訪問者創建一個唯一的 id (UID),並基於這個 UID 來存儲變量。UID 存儲在cookie 中,亦或通過 URL 進行傳導。
開始 PHP Session
在您把用戶信息存儲到 PHPsession 中之前,首先必須啟動會話。
注釋:session_start() 函數必須位於
標籤之前:
上面的代碼會向服務器註冊用戶的會話,以便您可以開始保存用戶信息,同時會為用戶會話分配一個 UID。
存儲 Session 變量
存儲和取回session 變量的正確方法是使用 PHP$_SESSION 變量:
session_start();
// store session data
$_SESSION[‘views’]=1;
?
//retrieve session data
echo “Pageviews=”. $_SESSION[‘views’];
?
輸出:
Pageviews=1
在下面的例子中,我們創建了一個簡單的 page-view 計數器。isset() 函數檢測是否已設置 “views” 變量。如果已設置 “views” 變量,我們累加計數器。如果 “views” 不存在,則我們創建 “views” 變量,並把它設置為 1:
session_start();
if(isset($_SESSION[‘views’]))
$_SESSION[‘views’]=$_SESSION[‘views’]+1;
else
$_SESSION[‘views’]=1;
echo “Views=”. $_SESSION[‘views’];
?
終結 Session
如果您希望刪除某些session 數據,可以使用 unset() 或 session_destroy() 函數。
unset() 函數用於釋放指定的 session 變量:
unset($_SESSION[‘views’]);
?
您也可以通過session_destroy() 函數徹底終結 session:
session_destroy();
?
注釋:session_destroy() 將重置 session,您將失去所有已存儲的session 數據。
五、PHP 錯誤處理
錯誤處理方法:
·簡單的 “die()” 語句
·自定義錯誤和錯誤觸發器
·錯誤報告
為了避免用戶獲得類似上面的錯誤消息,我們在訪問文件之前檢測該文件是否存在:
if(!file_exists(“welcome.txt”))
{
die(“File not found”);
}
else
{
$file=fopen(“welcome.txt”,”r”);
}
?
假如文件不存在,您會得到類似這樣的錯誤消息:
File not found
比起之前的代碼,上面的代碼更有效,這是由於它採用了一個簡單的錯誤處理機制在錯誤之後終止了腳本。
不過,簡單地終止腳本並不總是恰當的方式。讓我們研究一下用於處理錯誤的備選的 PHP 函數。
創建自定義錯誤處理器
創建一個自定義的錯誤處理器,可以在PHP 中發生錯誤時調用該函數。
該函數必須有能力處理至少兩個參數(error level 和 error message),但是可以接受最多五個參數(可選的:file, line-number 以及error context):
語法
error_function(error_level,error_message,
error_file,error_line,error_context)
參數描述
error_level:必需。為用戶定義的錯誤規定錯誤報告級別。必須是一個值數。參見下面的表格:錯誤報告級別。
error_message:必需。為用戶定義的錯誤規定錯誤消息。
error_file:可選。規定錯誤在其中發生的文件名。
error_line:可選。規定錯誤發生的行號。
error_context:可選。規定一個數組,包含了當錯誤發生時在用的每個變量以及它們的值。
創建錯誤處理函數
function customError($errno, $errstr)
{
echo “Error: [$errno] $errstr
“;
echo “Ending Script”;
die();
}
現在,我們已經創建了一個錯誤處理函數,我們需要確定在何時觸發該函數。
Set ErrorHandler
PHP 的默認錯誤處理程序是內建的錯誤處理程序。我們打算把上面的函數改造為腳本運行期間的默認錯誤處理程序。
可以修改錯誤處理程序,使其僅應用到某些錯誤,這樣腳本就可以不同的方式來處理不同的錯誤。不過,在本例中,我們打算針對所有錯誤來使用我們的自定義錯誤處理程序:
set_error_handler(“customError”);
由於我們希望我們的自定義函數來處理所有錯誤,set_error_handler() 僅需要一個參數,可以添加第二個參數來規定錯誤級別。
//定義錯誤處理函數
function customError($errno, $errstr)
{
echo “rror: [$errno] $errstr”;
}
//設置錯誤處理函數
set_error_handler(“customError”);
//觸發錯誤
echo($test);
?
可能的錯誤類型:
·E_USER_ERROR – 致命的用戶生成的run-time 錯誤。錯誤無法恢復。腳本執行被中斷。
·E_USER_WARNING – 非致命的用戶生成的run-time 警告。腳本執行不被中斷。
·E_USER_NOTICE – 默認。用戶生成的`run-time 通知。腳本發現了可能的錯誤,也有可能在腳本運行正常時發生。
例子
在本例中,如果”test” 變量大於 “1”,則發生E_USER_WARNING 錯誤。如果發生了 E_USER_WARNING,我們將使用我們的自定義錯誤處理程序並結束腳本:
//error handler function
function customError($errno, $errstr)
{
echo “Error: [$errno] $errstr
“;
echo “Ending Script”;
die();
}
//set error handler
set_error_handler(“customError”,E_USER_WARNING);
//trigger error
$test=2;
if ($test1)
{
trigger_error(“Value must be 1 or below”,E_USER_WARNING);
}
?
錯誤記錄
通過 E-Mail 發送錯誤消息
function customError($errno, $errstr)
{
echo “Error: [$errno] $errstr “;
echo “Webmaster has been notified”;
error_log(“Error: [$errno] $errstr”,1,
“526369948@qq.com”,”From: 526369948@qq.com”);
}
六、PHP 異常處理
異常處理用於在指定的錯誤(異常)情況發生時改變腳本的正常流程。這種情況稱為異常。
當異常被觸發時,通常會發生:
·當前代碼狀態被保存
·代碼執行被切換到預定義的異常處理器函數
·根據情況,處理器也許會從保存的代碼狀態重新開始執行代碼,終止腳本執行,或從代碼中另外的位置繼續執行腳本
我們將展示不同的錯誤處理方法:
·異常的基本使用
·創建自定義的異常處理器
·多個異常
·重新拋出異常
·設置頂層異常處理器
Try, throw 和 catch
要避免上面例子出現的錯誤,我們需要創建適當的代碼來處理異常。
正確的處理程序應當包括:
1.Try – 使用異常的函數應該位於”try” 代碼塊內。如果沒有觸發異常,則代碼將照常繼續執行。但是如果異常被觸發,會拋出一個異常。
2.Throw – 這裡規定如何觸發異常。每一個 “throw” 必須對應至少一個 “catch”
3.Catch – “catch” 代碼塊會捕獲異常,並創建一個包含異常信息的對象
讓我們觸發一個異常:
//創建可拋出一個異常的函數
function checkNum($number)
{
if($number1)
{
throw new Exception(“Value must be 1 or below”);
}
return true;
}
//在 “try” 代碼塊中觸發異常
try
{
checkNum(2);//如果拋出異常則執行catch中的語句,這裡就不接着往下執行了
//If the exception is thrown, this text will not be shown
echo ‘If you see this, the number is 1 or below’;
}
//捕獲異常
catch(Exception $e)
{
echo ‘Message: ‘ .$e-getMessage();
}
?
上面代碼將獲得類似這樣一個錯誤:
Message: Value must be 1 or below
創建一個自定義的 Exception 類
創建自定義的異常處理程序非常簡單。我們簡單地創建了一個專門的類,當 PHP 中發生異常時,可調用其函數。該類必須是 exception 類的一個擴展。
這個自定義的exception 類繼承了 PHP 的 exception 類的所有屬性,您可向其添加自定義的函數。
我們開始創建exception 類:
class customException extends Exception //extends 相當於繼承關鍵字
{
public function errorMessage() //定義了自己的報錯函數
{
//error message 在繼承的類中,可以訪問基類的方法
$errorMsg = ‘Error on line ‘.$this-getLine().’ in ‘.$this-getFile()
.’: ‘.$this-getMessage().’ is not a valid E-Mail address’;
return $errorMsg;
}
}
$email = “someone@example…com”;
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
}
catch (customException $e)
{
//display custom message
echo $e-errorMessage();
}
?
這個新的類是舊的exception 類的副本,外加 errorMessage() 函數。正因為它是舊類的副本,因此它從舊類繼承了屬性和方法,我們可以使用 exception 類的方法,比如 getLine() 、getFile() 以及 getMessage()。
多個異常
可以為一段腳本使用多個異常,來檢測多種情況。
可以使用多個if..else 代碼塊,或一個 switch 代碼塊,或者嵌套多個異常。這些異常能夠使用不同的 exception 類,並返回不同的錯誤消息:
求經典PHP基礎教程?
《PHP與MySQL程序設計》《 PHP web 2.0開發實戰》《 PHP高級程序設計:模式、框架與測試 》《PHP實戰》(PHP in Action) 《深入PHP面向對象、模式與實踐 (第2版) 》《PHP和MySQL Web開發原書第4版 》《 PHP經典實例(第二版)》《PHP技術內幕》《 PHP與MYSQL基礎教程 》
PHP程序員要掌握的知識以及相關書籍
我認為,首先,要想成為一個程序員,C或者C++或者JAVA是必須選擇一門掌握的,因為其中的編程思想和編程方法和這些語言所具有的廣大使用群和庫LIB是今後學習其他語言的巨大幫助。
其次,PHP是作為網頁後台語言存在的,那麼要想做後台,就要把前台的HTML,CSS,JS,flash,甚至是photoshop都要玩通。後台的話,需要補一下數據庫和LINUX的知識。
最後推薦一些入門到中級的網站
視頻PHP100出的教學視頻,兄弟連-電驢上有 出的教學視頻
這兩個視頻都有對應的書。
另外,網上可以下載到明日科技 這個團隊出版的書籍 都配有光碟 光碟裡邊有不同功能模塊(例如博客系統、商城系統、OA系統)的源碼,多讀這些源碼,對編程幫助很大。
再到高級就是大數據存儲、網絡優化的東西了吧,我的水平還沒接觸到,你加油吧~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280733.html