摘要:引用傳遞除了對象和資源,其他類型的引用傳遞都是指向同樣的數據,各自互相影響。與基本用法一致,但區別如下沒有返回值,有返回值可以輸出多個參數,只可以輸出一個參數是函數,可以打印復合類型,例如等,主要用于數組打印是函數,把文字格式化以后輸出。
命令行執行PHP代碼三種方式
1、/usr/local/php/bin/php 后面跟上某個PHP文件
2、/usr/local/php/bin/php -r “這里直接寫上PHP代碼”
3、創建一個文件,在第一行寫上下面代碼
#! /usr/local/php/bin/php 命令行傳參兩個全局變量
$argc和$argvphp -v 通過$argv[1]可以獲取到-v
PHP換行在控制臺輸入換行
windows系統是 ,linux系統是 ,一般直接使用PHP_EOL在HTML里面換行
對象(資源)傳遞
輸入值傳遞
除了對象和資源,其他類型的值傳遞都是數據拷貝,各自獨立。
而對象和資源的值傳遞很特別,看起來很像引用傳遞,但其實只是中間多了一個對象標識。
引用傳遞
對象數組的json化
除了對象和資源,其他類型的引用傳遞都是指向同樣的數據,各自互相影響。
而對象和資源的引用傳遞都是指向中間的對象標識。
對象與關聯數組的json_encode()都會轉化成{"name":value}字符串形式,只有純索引數組才會轉化成[value1,value2]字符串形式
對象數組的字符串使用json_decode()會轉成對象數組,如果使用json_decode($strArr,true)會轉成二維數組
Linux與Win文件路徑分隔符windows使用的是
linux使用的是 /
在PHP提供了一個內置常量解決不同系統中路徑的問題:DIRECTORY_SEPARATOR
linux只可以使用 /,而windows 兩種都可以使用,所以一般都轉換成linux的分隔符
str_replace("", "/", __FILE__)Linux、Mac與Win 文本換行符在unix系列用
在windows系列用
在mac用
PHP提供PHP_EOL來替代,以提高代碼的源代碼級可移植性
echo PHP_EOL; //windows平臺相當于 echo " "; //unixlinux平臺相當于 echo " "; //mac平臺相當于 echo " ";父類中也可以調用子類的方法(使用反射)在父類中定義(_initialize()父類中沒有)
public function __construct() { //控制器初始化 if(method_exists($this,"_initialize")) $this->_initialize(); }在子類中定義_initialize()方法
最后再實例化子類時,就會在父類的構造函數中調用子類定義的方法
防止頁面超時set_time_limit ( int $seconds ) //設置腳本最大執行時間
設置允許腳本運行的時間,單位為秒。如果超過了此設置,腳本返回一個致命的錯誤。默認值為30秒
PHP中超全局變量$GLOBALS和global的區別$GLOBALS是外部的全局變量本身
global是外部全局變量的同名引用或者指針
PHP中的錯誤抑制符@的使用@的作用:只是不讓系統報錯,屏蔽了錯誤
@的適用:變量,函數和 include 調用,常量
@的應用:
出錯了對你影響不大, 你也不關心這個錯誤是什么, 你也不會安排額外的邏輯來處理這種錯誤, 那么你可以使用錯誤抑制. 否則, 請你使用額外的邏輯來判斷錯誤。
PHP一般異常處理:最重要是要捕獲到異常,然后做一些特殊處理@的例子:
@include("file"); //等同 $foo = error_reporting(0); include("file"); error_reporting($foo); //所以很多步驟都重復了,所以盡量少用,避免開銷PHP類內部調用類外部定義的變量(3種方式),實現在類中引用外部定義的全局變量通過傳遞外部參數到類內部
url = $url; } function showUrl(){ echo $this->url; } } $test = new test($url); $test->showUrl(); ?>在PHP類方法中使用global關鍵字直接引用類外部變量
url = $url; echo $this->url; } } $test = new test($url); $test->showUrl(); ?>在PHP類方法中直接使用$GLOBALS全局數組引用類外部變量
url = isset($GLOBALS["url"])?$GLOBALS["url"]:""; echo $this->url; } } $test = new test($url); $test->showUrl(); ?>PHP性能優化少寫PHP代碼,多用PHP自身能力(內置變量、常量、函數)
PHP內置函數的性能優劣選擇
建議不要使用錯誤抑制符@
減少計算密集型業務
避免在循環內循環條件做運算
htmlentities()和htmlspecialchars()區別htmlspecialchars() 只轉化html的5種字符
& & " " " ' (for ENT_HTML401) or ' (for ENT_XML1, ENT_XHTML or ENT_HTML5), but only when ENT_QUOTES is set < < > >htmlentities() 轉化所有的html代碼,除上面5種字符以外,中文也會轉化成html實體
$str="測試頁面"; echo htmlentities($str); // 2aê?ò3?? $str="測試頁面"; echo htmlspecialchars($str); // 測試頁面有中文的時候,最好用 htmlspecialchars ,否則可能亂碼
htmlspecialchars() 對應 htmlspecialchars_decode()
htmlentities() 對應 html_entity_decode()
$_POST、$HTTP_RAW_POST_DATA與php://input的區別由于$HTTP_RAW_POST_DATA與php://input作用一樣,但區別如下:
1、$HTTP_RAW_POST_DATA 需要配置 php.ini 中的 always_populate_raw_post_data 值為 On 才會生效,而 php://input 無需配置就生效
2、當 $_POST 與 php://input 可以取到值時 $HTTP_RAW_POST_DATA 為空
3、$HTTP_RAW_POST_DATA 從php5.6起就開始過時了,并在php7.0中正式刪除,而用 php://input 替代相同點:
1、不能用于 enctype="multipart/form-data"(也叫Content-Type)$_POST 與 php://input 的區別如下:
1、Content-type 為application/x-www.form-urlencoded或multipart/form-data時,$_POST才有值,得到的數據是經過urldecode解碼處理
instanceof使用注意
2、除了Content-type 為multipart/form-data時,php://input沒值以外,其他情況都有值,例如:application/json、text/xml、text/plain
3、文件上傳只能通過$_POST獲取值
4、其他方式如:put/delete,也只能通過php://input獲取判斷對象是否屬于某類,此類可以是父類、爺類就會返回true,否則返回false
echo、print、print_r()、printf()、sprintf()、var_dump()區別echo :是語句不是函數,沒有返回值,可輸出多個變量值,不能輸出數組和對象,只能打印簡單類型(如int,string,bool,float,null)。
print :是語句不是函數,有返回值 1 ,只能輸出一個變量,不能輸出數組和對象,只能打印簡單類型(如int,string,bool,float,null)。
echo與print基本用法一致,但區別如下:
1、echo沒有返回值,print有返回值
2、echo可以輸出多個參數,print只可以輸出一個參數
print_r :是函數,可以打印復合類型,例如:array、object等,主要用于數組打印
printf :是函數,把文字格式化以后輸出。
sprintf :是函數,不打印,而是返回格式化后的文字,其他的與printf一樣。
var_dump :是函數,輸出變量的內容、類型或字符串的內容、類型、長度。常用來調試。
運算符 &、|、&&、|| 之間的區別& :位與運算符,返回是int數據類型
| :位或運算符,返回是int數據類型
//位與或位或時 數據類型轉換 TRUE => 1 FALSE => 0 ""與"0" => 0 //按字符串轉數值類型的規矩 [] => 0 非空數組 => 1 12 | [] //12 TRUE & "8" //0 TRUE | "8" //9&& :與運算符,返回是bool數據類型
|| :或運算符,返回是bool數據類型
子類重寫父類方法的限制父類中final方法是不可以重寫的
子類重寫父類方法只可寬松,不可嚴謹
重寫方法名稱必須相同
大括號的作用作用域-------例如:function fn(){}
$str{4}在字符串的變量的后面跟上{},大括號和中括號一樣都是把某個字符串變量當成數組處理
{$val},這時候大括號起的作用就是,告訴PHP,括起來的要當成變量處理。
var_export()用法以php數據原型輸出
$msg = "xxx"; var_export($msg); //輸出"xxx" var_export($msg,true); //不輸出,只返回 "xxx"動態生成.php文件
$msg = "nihao"; $content = ""; file_put_contents("./test.php",$content);include與request 內外調用用法包含進來的文件,其實與原文件相當合并1、外面文件可以訪問里面文件定義的變量(在include之后定義的變量) 2、里面文件可以訪問外面文件在include之前定義的變量
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22218.html
摘要:目前在前端開發所占的比重越來越高,在我們學習和開發的過程中都會去使用。下面把程序員雷雪松對的知識點總結和歸納分享給大家。過濾對同胞元素的搜索。將匹配元素集合縮減為集合中的最后一個元素。返回指定元素相對于其他指定元素的位置。 jQuery目前在Web前端開發所占的比重越來越高,在我們jQuery學習和開發的過程中都會去使用。jQuery幫我們解決了瀏覽器之間JS一些不兼容的地方和簡化了原...
摘要:中在基礎集合類路由類中和分頁類中等,都用到了對象遍歷這個小知識點,這些類都是實現了這個接口,這個接口定義,返回的是迭代器對象。標準擴展庫中提供了很多默認迭代器實現類,比較常用的是數組迭代器對象,參考官網迭代器。 說明:本文章主要講述PHP的對象遍歷(Iterator)知識點。由于Laravel框架中就在集合(Collection)中用到了對象遍歷知識點,故記錄并學習之。同時,作者會將開...
摘要:本文的分享主要圍繞以下幾個方面能做什么常見應用場景介紹如何學習語法基礎實戰面向對象編程實戰練熟基礎小游戲項目的實現與實戰一能做什么一種編程語言往往可以應用于多方面,有些方面比較常用,有些方面極為常用。比如表示是一個空列表。 摘要:Python語言的教程雖然隨處可見,但是忙于日常業務/學習的你或許:一直想要找個時間學一點,但是又不知道該從何下手?本文將從Python能做什么,如何學習Py...
閱讀 1193·2021-11-22 13:54
閱讀 2442·2021-09-22 15:36
閱讀 2745·2019-08-30 15:54
閱讀 817·2019-08-30 15:53
閱讀 3181·2019-08-30 15:53
閱讀 523·2019-08-29 15:21
閱讀 2878·2019-08-28 18:28
閱讀 3027·2019-08-26 13:37