# 函數也叫方法
## 下面是語法:
```
runction user(){
return 返回值;
}
調用
echo user();
```
——————————————————————————————————————————————————————————
# 參數傳遞點語法與傳址
&類似于指針傳址
~~~
<?php
function show(&$var):int{
$var++;
return $var;
}
//傳值 地址
$var=1;
echo show($avr); //1
echo show($avr); //2
echo show($avr); //3
~~~
這樣函數外面的$var值也就隨著函數內的值變動而變動了,與靜態(static)變量方法相同
## 三點語法
```
function sum(...$vars){
print_r($vars);
}
sum (1,2,3,4,5,6,7,8,9,0,10); 傳遞多個參數的值
```
## ...三點語法用于接收參數數量不定的參數。
##
## sum返回一個數組。
##
——————————————————————————————————————————————————————————
# declare與參數裂隙約束(嚴格模式)
```
function show (int $num){
return $num;
}
show() //這里如果傳入其他類型就會報錯但是。
```
## declare(嚴格模式)
## declare(strict_types=1);
```
declare與參數類型約束 //嚴格模式 進制類型自動轉換
declare(strict_types=1);
function show (int $num){
return $num;
}
show() // 這里如果輸入字符串類型的1,2,3,等等都不行。
```
**
其他類型也是這樣的寫法都可以參照以上int類型的寫法**
——————————————————————————————————————————————————————————
# 函數返回值約束
## 語法:
return 這里必須返回字符串否則錯誤;
```
function sun(): string
{
return 這里必須返回字符串否則錯誤;
}
```
### ?string
return 這里返回的可以是字符串也可也是別的類型的參數;
```
function sun(): ?string
{
return 這里返回的可以是字符串也可也是別的類型的參數;
}
```
## 函數引用外部變量
##
##函數中引入全局變量(函數引入函數以外的變量)
~~~
<?php
$name="向軍大叔";
function show ()
{
$name=$GLOBALS['name'];
return $name;
}
echo show();
~~~
## 系統內置回調函數
## call_user_func_array('函數名稱',[參數以數組形式出現])
```
function show ($a,$b)
{
$c=$a+$b';
echo $c;
}
call_user_func_array('show',[100,20])
; //等于調用函數
```
## 閉包函數
閉包函數==JS里的事件函數,也是寫死一個方法可以一直方便調用
語法:
```
$a=fuction(){
$c=$a+$b;
echo $c;
}
```
代碼案例:
~~~
<?php
$a=function(){
$a=100;
$b=500;
$c=$a+$b;
return $c;
};
function xiao($c){
echo $c();
}
xiao($a);
~~~
# use 關鍵字
```
$str='hello world111';
$a=function() use($str){
echo $str;
};
$a();
```
## use等于把外部變量傳入函數里去
代碼如下:
~~~
<?php
$c=100;
$d=200;
$a=function()use($c,$d){
$y=$c+$d;
return $y;
};
function xiao($c){
echo $c();
}
xiao($a);
~~~
## 函數注釋規范
```
/**
@函數用途說明
@param $變量 數據類型
@param $變量 數據類型
@return 數據類型
*/
```
- 變量刪除查找與static靜態變量
- 賦值原理
- global涵數引入全局變量使用
- 數據類型
- 數據類型判斷is_
- PHP輸出
- PHP指針(取址運算)
- PHP運算符
- 常量
- 字符串
- 字符串添加反斜杠函數addslashes($變量)
- htmlspecialchars()轉字符實體
- int strcmp()判斷2個字符串大小
- strstr() 查找字符串
- 字符串常用系統內置函數
- 控制流之if
- switch判斷方法
- while循環
- for循環
- 跳出循環
- PHP文件引文入( include與require)
- PHP文件引入include_once與require_once
- 函數(函數各種應用以及約束方法)
- global 引入函數外的變量
- 函數的遞歸
- 數組(遍歷方法)與( foreach()遍歷方法)
- 數組函數
- PHP時間操作
- 常用數學內置函數
- 正則表達式
- PHP 九大超全局變量(內置的)
- 超全局變量$_SERVER的詳細介紹
- PHP類
- 類的$this
- 類的構造方法__construct()
- 類的修飾符 public private protected
- 類的繼承
- 類的多態(instanceof)方法
- 類的靜態方法與常用關鍵字(final static self parent clone )
- 類的__set() __get() 方法
- 類的重載
- 類的__call()與__callstatic()方法
- 類的抽象類與方法
- 抽象類接口interface (實現子類繼承多個抽象類)
- 類的trait (解決單繼承的限制)
- 命名空間
- 類的魔術常量以及系統函數
- mysql數據庫
- 數據庫的概念
- SQL語句規范
- 數據庫字段類型
- 字段是屬性(創建數據庫字段用)
- 數據庫操作(增刪改)
- 數據表與字段(DDL)(增刪改)
- 數據的操作(DML)(增刪改)
- 數據的查詢數據(最重要最核心經常看)
- 數據庫 字符集 引擎 校對等
- cookie創建使用與刪除
- session創建使用與刪除
- 在cookie禁止的情況下session的使用方法
- session的配置以及session與cookie的區別
- session實戰登錄
- PHP文件處理函數
- PHP打開讀取寫入文件
- file_get_contents GET請求接收
- PHP文件上傳以及過大報錯解決方案
- 驗證并控制上傳格式與大小
- 判斷是否有目錄(如果沒有就創建目錄)
- 上傳文件到目錄move_uploaded_file()
- 圖片上傳用class寫法
- PDO鏈接數據庫與exec()使用(只能用于增,刪,改)
- PDO-推薦方法prepare() 增刪改查
- 關于PDO類種事務使用
- 類的單例模式寫法
- 自動加載autoload()
- composer安裝與使用
- PHP操作XML
- PHP操作JSON
- curl GET與POST請求接收
- 自己封裝的一些實用函數
- 微信公眾號開發
- 常見問題以及解決
- PHP反序列化HTML
- try catch嘗試執行與異常
- json 對象轉字符串數組的方法可以在用json_e轉數組