1、基本認識
PHP是幹什麼的?百度百科上提到說:PHP就是一門腳本語言,開發用的,相信這個大家只要去搜一下,就會有一大堆關於PHP概念的解釋。php
相信咱們對PHP的初步認識是從瀏覽器開始的吧,當咱們每打開瀏覽器去搜尋咱們所須要的信息時,網站頁面會顯示出各類各樣很是棒的效果,五光十色的,靜態效果和動態效果共存,十分漂亮。html
這時候咱們須要思考一個問題,到底是什麼讓網站顯示的如此華麗呢?java
2、PHP是世界上最好的語言
在我上大學那會兒,記得C語言課上,老師說過一句話,任何變量要先定義,後使用。我嘴裏抱怨着「爲啥要先定義呢?想用就用唄,哪裏這麼多事兒!」。mysql
當時在課上說這話,就是文藝復興時期的布魯諾對天主教信仰進行挑戰,會被燒死的。直到有次不經意間翻開一本神書,上面有段代碼:nginx
它沒有定義變量,直接拿變量進行計算,心想:厲害!原來老師說的也不全對嘛。laravel
它將變量隨意使用,一下子看成整型使用,一下子看成字符串使用,心想:這代碼要飛啊!浪!程序員
它甚至在變量數組中不存在索引時,也能使用,只是警告一下,程序依舊運行,結果正常輸出,心想:神代碼,再不學就晚了!web
隨後,我激動地合上書,定眼一看封面,上面寫着三個字母: PHP面試
從那時候,腦海中就悄然印下這句話:php是世界上最好的語言。sql
3、PHP的一些小故事
一、非誠勿擾相親節目中,被滅燈的男子採訪感言:我不知道爲何,說本身是作PHP,燈就全滅了。可以讓女嘉賓燈全滅,這語言還不夠好?黑人問號臉hhh
二、若是您能讓這個論壇炸開鍋之PHP是世界上最好的語言,可以讓男人放棄和妹子的約會,去論壇吵架,這語言還不夠好?
某女:你能讓這個論壇的人都吵起來,我今晚就跟你走.
某軟件工程師:PHP是最好的語言!
某論壇炸鍋了,各類吵架...
某女:服了你了,咱們走吧 你想幹啥都行.
某軟件工程師:今天不行,我必定要說服他們,PHP必須是最好的語言
某女:.......
三、曾經有一部高清的「艾薇偶像劇」風靡網絡,不少熱血少年流着口水,連夜下載,第一集播出,一箇中年男子帶有口音說出:PHP是一門XXX的語言。男孩子紙巾都準備好了,最後看了這個,也是迷茫。
能讓熱血少年在擼管之際放下情緒,學習CS知識,這語言還不夠好?
4、PHP用途
說了那麼多小故事,看此文的你是否是對PHP產生了一點興趣呢?我再向大家說明一下用途吧。
PHP具備簡單易懂的語法、沒有奇怪的黑魔法、既能面向過程,又能面向對象、安裝後各類擴展集一身、包括但不限於mysql、json、mbstr等,方便至極。一言不合,一個頁面就html和PHP混寫,甚至最新版本都內置了小型webserver,連apache和nginx都不用上、一分鐘搭建博客論壇問你怕不怕、國外Ci、laravel、kohana、zf等框架層出不窮、國內tp社區棒、語言建立者積極上進優化、語言bug全世界的程序員和你一塊兒修復。最重要的是大小公司都用、找工做不愁啊!
PHP可能不是世界上最好的語言,但他必定是最適合新手學習編程的入門語言,也是進入Web開發領域的絕佳語言。若是對網絡安全感興趣的小夥伴們,必定要掌握好這門語言哦!
5、PHP語言開發技巧
也許屏幕前的你目前可能對PHP語法不是很瞭解,我推薦你逛逛這個站點:PHP手冊,這裏面對PHP語法作了很是詳盡的解釋,很適合初學者及開發者作全面的參考。此文主要是爲了分享博主在學習開發中的一點經驗分享。
如下內容大多數都是我在學習,工做中遇到的。咱們一塊兒來看~~
一、預約義常量
PATH_SEPARATOR //路徑分隔符(Windows爲分號,類Unix爲冒號)
DIRECTORY_SEPARATOR //目錄分隔符
PHP_EOL //當前系統的換行符
PHP_VERSION //PHP版本號
PHP_OS //PHP服務操做系統
PHP_SAPI //用來判斷是使用命令行仍是瀏覽器執行的,若是 PHP_SAPI=='cli' 表示是在命令行下執行
PHP_INT_MAX INT最大值,32位平臺時值爲2147483647
PHP_INT_SIZE INT字長,32位平臺時值爲4(4字節)
M_PI //圓周率值
M_E //天然數
FILE 所在文件的絕對路徑
LINE 文件中的當前行號
DIR 文件所在目錄
FUNCTION 函數名稱
CLASS 類的名稱
METHOD 類的方法名
NAMESPACE 當前命名空間的名稱
二、可變標識符
1 //可變變量 2 $i = 3; 3 $k = 'i'; 4 echo $$k; //輸出3 5 //可變函數 6 function func(){ 7 echo 'hello!'; 8 } 9 $i = 'func'; 10 $i(); //輸出hello 11 //可變類名 12 class CLS{ 13 public $k = 'hello'; 14 } 15 $i = 'CLS'; 16 $j = new $i; 17 echo $j->k; 18 //可變屬性 19 class CLS{ 20 public $k = 'hello'; 21 } 22 $i = 'k'; 23 $j = new CLS; 24 echo $j->$i; 25 .//可變方法 26 class CLS{ 27 public function k(){ 28 echo 'hello'; 29 } 30 } 31 $i='k'; 32 $j=new CLS; 33 $j->$i();
三、雙引號,單引號
在php中,單引號和雙音號均可以定義一段字符串,但區別是雙引號會默認在解析中進行處理。而單引號不會。
$user='gbw'; $sql="select * from user as u where u.name='$user'";
這個語句是正確解析出$user的。但單引號就不行了。但單引號直接display到view中去會更好,由於少了層解析,更快。
還有php的特定寫法:
$str = <<<EOT 字符串內容 EOT;
就是三個<和一個名字將一大段字符包裹起來,這個方法是不須要「」的,通常用在中間大量引用html時。
四、empty(),isset(),==null,==0問題
爲何我會拋出這個問題呢,由於我曾經被坑過,┭┮﹏┭┮
1 $string="php vs java,but we do not care result about this"; 2 $str="php"; 3 if(strpos($string,$str)){ 4 echo 'find'; 5 } 6 else{ 7 echo 'no'; 8 } 9 //no
這個例子你們在php開發中會不會遇到呢,strpos()返回字符串中特定字符的位置,明顯是0,好,php是弱類型語言,0和null同樣,天然是no,對於這個問題,建議用strstr判斷。
這只是個引子。
1 $str=0; 2 if(!isset($str)){ 3 echo 'empty'; 4 } 5 else{ 6 echo 'no'; 7 }//no 8 if(empty($str)){ 9 echo 'empty'; 10 } 11 else{ 12 echo 'no'; 13 }//empty 14 if($str===null){ 15 echo 'empty'; 16 } 17 else{ 18 echo 'no'; 19 }//no 20 if($str==null){ 21 echo 'empty'; 22 } 23 else{ 24 echo 'no'; 25 }//empty
這裏你們應該都明白了的吧,null 便是empty(),0便是null,但0並非===null,即0仍是int,null是空.
五、閉包
1 function closureCreater() { 2 $x = 1; 3 return function($fun = null) use(&$x) {//按引用傳值 4 echo "<br />" . $x++; 5 $fun and $fun(); 6 }; 7 } 8 9 $x = "hello world"; 10 $test = closureCreater(); 11 $test(); 12 $test(function(){ echo "closure test one"; }); 13 $test(function(){ echo "closure test two"; }); 14 $test( 15 function() use($x) 16 { echo "<br />".$x; 17 });
你們不知道除了js,php中還有閉包吧,但這裏的php的閉包就沒有js那般優雅了,要引用還要使用use方法,對於通常的閉包上面那個例子應該夠用了。
六、php指針
你們會不會很疑惑,除了C,還有別的小兄弟有指針?
current/pos 返回當前被內部指針指向的數組單元的值,並不移動指針。
key 返回數組中當前單元的鍵名,並不移動指針
next 將數組中的內部指針向前移動一位,並返回移動後當前單元的值。先移動,再取值。
prev 將數組的內部指針倒回一位,並返回移動後當前單元的值先移動,再取值。
end 將數組的內部指針指向最後一個單元,並返回最後一個單元的值
reset 將數組的內部指針指向第一個單元,並返回第一個數組單元的值
這但是頗有用的,當咱們不知道一個數組的第一個元素下標是什麼鬼時,current()的出現避免了咱們的尷尬.
6、結束
這裏分享的都是在我工做學習中的問題,也是極有可能面試到的哦,若是有好的想法或者遇到什麼問題的話我會繼續分享的~~~(ง •_•)ง