### 對象的賦值
- 對象的賦值與普通的變量,數組的賦值不一樣,變量的賦值是引用賦值(即兩個變量指向同一塊內存空間)。可以通過clone 來創建一個對象的副本
- clone 對象時,是對對象的淺復制,若對象中的屬性也是一個對象的話,clone前后的對象該屬性都是指向同一塊內存空間的。我們可以使用魔術方法__clone克隆時,對屬性在進行克隆一次。
```
public function __clone() {
$this->pro_obj = clone $this->pro_obj
}
```
### require, include, use, require_once
- require_once 只會加載同一個文件一次,而require可以加載同一個文件多次
- require 和 include 都是包含文件,區別在于require在找不到文件時會error中斷程序,而include這會warning,程序繼續執行
- use 導入命名空間。
### 范圍解析符 :: (self::, static::, parent::)
### self, static, $this 的區別
- self 代表當前類
- static 代碼所在的方法被哪個類調用,則就代表那個類
- this 代表當前類的實例
### new self 和 new static
- new self 當前代碼是在哪個類中,就是實例化那個類的實例
- new static 當前代碼所在的方法是被哪個類調用的,則就是實例化那個類的實例
### static 的靜態訪問
- static定義的方法或屬性,在程序第一次進行加載時,即駐留內存,程序結束時,釋放。
- 通過static申明的變量為靜態變量,是該類的公共變量。第一次使用時即生成,對應該類的所有對象只有一份。是屬于類的,不是屬于對象的。static變量是屬于類而不屬于對象,可以在任何地方通地類來訪問,是類的全局變量,類創建時即存入內存。對多個對象來說,靜態數據成員只存儲一處,可以節省內存。只要對靜態數據成員的值更新一次,保證所有對象存取更新后的相同的值。
- 通過static申明的方法為靜態方法。執行該方法時不會將對象引用傳給函數,所以我們不能訪問非靜態成員,只能訪問靜態方法或靜態變量。只能使用關于類的方式如self static parent等。使用時不用生成對象即可執行
- 靜態方法中不可使用偽變量$this,則可以使用self,static, parent
```
通過類名訪問:(通過類名只能訪問靜態方法,靜態屬性和部分非靜態方法)
類::靜態方法
類::靜態屬性
類::非靜態方法(方法中不能包含$this)
通過類的實例訪問
實例::靜態屬性
實例::靜態方法
實例->非靜態屬性
實例->非靜態方法或靜態方法
```
### final修飾詞
- 若一個類聲明了 final,則這個類不能被繼承
- 若父類中的方法使用了final修飾符, 則該方法不能被子類重寫
### call_user_func 和 call_user_func_array
- 功能都是調用指定的函數,或類方法。區別在于第二個參數。call_user_func_array是已數組的形式傳參。
- 調用方法`call_user_func('test', 'hello', 'world')` `call_user_func_array('test', ['hello', 'world'])`
- 調用類方法 `call_user_func(['User', 'test'], 'hello', 'world')` `call_user_func_array(['User', 'test'], ['hello', 'world'])`
- 調用靜態方法`call_user_func('User::test', 'hello', 'world')` `class_user_func_array('User::test', ['hello', 'world'])`
- 調用對象方法 `call_user_func([$obj, 'test'], 'hello', 'world')` `call_user_func_array([$obj, 'test'], ['hello', 'world'])`
### trait代碼塊
- linux 基礎
- ln 鏈接
- linux 環境變量
- linux 進程查看
- nginx
- redis
- redis 安裝
- php 底層原理
- php源碼編譯安裝
- phpize文件
- php命令行
- php7 新特性
- php7 變量
- php7 生命周期
- php sapi運行模式
- php 內存管理
- php 運行機制和Zend虛擬機
- php垃圾回收
- php 基礎
- php.ini
- php函數
- 面向對象
- php 文件上傳
- ob緩沖和頁面靜態化
- php中的session
- php cURL擴展
- composer 應用
- php 錯誤和異常
- thinkphp
- tp6容器和依賴注入
- tp6 的服務
- tp6事件
- tp6 多應用
- tp6路由
- tp6 cache
- tp6 request
- tp6 中間件
- tp6 response
- tp6 Db
- 備忘錄
- 數據庫表