
# 使用方法

---

# laravel中的使用
```
namespace Illuminate\Database\Eloquent;
//省略一些命名空間
abstract class Model implements ArrayAccess, Arrayable, Jsonable, JsonSerializable, QueueableEntity, UrlRoutable
//省略部分代碼
//創建一個新的Eloquent模型實例
public function __construct(array $attributes = [])
{
$this->bootIfNotBooted();
$this->syncOriginal();
$this->fill($attributes);
}
//判斷模型實例是否存在該屬性
public function __isset($key)
{
return ! is_null($this->getAttribute($key));
}
//注銷一個模型的實例
public function __unset($key)
{
unset($this->attributes[$key], $this->relations[$key]);
}
//處理模型實例中不存在的函數調用
public function __call($method, $parameters)
{
if (in_array($method, ['increment', 'decrement'])) {
return $this->$method(...$parameters);
}
return $this->newQuery()->$method(...$parameters);
}
//將模型實例轉換為替代的字符串
public function __toString()
{
return $this->toJson();
}
//當模型序列化的時候判斷是否要啟動
public function __wakeup()
{
$this->bootIfNotBooted();
}
//處理模型實例中不存在的靜態函數調用
public static function __callStatic($method, $parameters)
{
return (new static)->$method(...$parameters);
}
```
User模型
```
class User extends Model
{
protected $table='users';
}
//__construct將被調用,用于初始化對象
$user=new User();
//__set($key,$value)將被調用,$key="name",$value="xiaozhang"
$user->name="xiaozhang";
//__get($key)將被調用,$key="name",用于屬性獲取
echo $user->name;
//__isset($key)將被調用,$key="name",用于判斷屬性是否存在
isset($user->name);
//unset($key)將被調用,$key="name"
unset($user->name);
//__call($method,$parameters)將被調用,$method="find" $parameters=5
$user->find(1);
//__callstatic($method,$parameters)將被調用,$method="find" $parameters=5
User::find(1);
//__toString()將被調用
echo $user;
$us=serialize($user);
//__wakeup()將被調用
$test2=unserialize($us);
```
- 書列表
- laravel框架關鍵技術
- 第一章 組件化開發與composer使用
- 簡介
- composer
- 添加路由組件
- 添加控制器模塊
- 添加模型組件
- 添加視圖組件
- 第三章 laravel框架中常用的php語法
- 匿名函數
- 文件包含
- 魔術方法
- 魔術常量
- 反射
- 后期靜態綁定
- traits
- 第四章 laravel框架中使用的HTTP協議基礎
- HTTP協議
- 數據庫
- 數據遷移
- 第六章 laravel框架中的設計模式
- IOC模式
- php核心技術與最佳實踐
- 第一章面向對象核心
- 反射
- 簡單ORM
- 異常和錯誤
- 接口
- 第二章,面向對象設計
- 設計原則
- 單一職責
- 接口隔離
- 開放封閉
- 替換原則
- 依賴倒置
- linux是怎么寫的呢?
- 第三章 正則表達
- 認識正則
- 第四章 php網絡技術應用
- HTTP協議詳解
- php和http相關函數
- 垃圾信息防御措施
- 現代操作系統
- 引論
- sql必知必會
- 限制結果
- 按位置排序
- where求職順序
- IN操作符
- like
- 函數
- group by
- 組合查詢
- 插入檢索出的數據
- 視圖
- 高性能mysql
- 第一章節 mysql架構與歷史
- mysql架構邏輯圖
- 連接與管理
- 優化與運行
- 讀寫鎖
- 鎖粒度
- 表鎖(table lock)
- 行級鎖(row lock)
- ACID
- 隔離級別
- 死鎖
- 隱式和顯式鎖定
- 多版本并發控制
- Innodb概覽
- 第四章節 Schema與數據類型優化
- 選擇優化的數據類型
- 日期和時間類型
- 標識列
- 特殊類型數據
- 表設計中的缺陷
- 范式
- 計數器表
- 第五章 創建高性能索引
- 索引基礎
- 索引類型
- 索引的優點
- 高性能索引策略
- 選擇合適的索引列順序
- 聚簇索引
- 順序的主鍵什么時候會造成更壞的后果
- 覆蓋索引
- 使用索引掃描來做排序
- 壓縮索引
- 冗余和重復索引
- 索引和鎖
- 支持多種過濾條件
- 什么是范圍條件
- 優化排序
- 維護索引和表
- 表損壞
- 減少索引和數據的碎片
- 第六章 查詢性能優化
- 掃描的行數和訪問類型
- 重構查詢方式
- 查詢執行的基礎
- 重構-改善既有代碼設計
- 第一章-重構
- 什么是重構
- 第一個案列
- 重構第一步
- 王垠博客
- 多態取代價格相關邏輯