寫到一半,突然想到會不會有朋友不太清楚為什麼有時候是使用->有時候是用=的原因?
所以先插入一小段的基礎OOP物件導向
所以先來解釋一下什麼是物件導向
物件導向分為三個部分 1.類別 2.物件 3.屬性
我們直接用一個例子來看
車是一個類別,GTR是一個物件,而CC數、車長、車寬就是屬性
所以常會看到文章說類別(Class)是一個抽象的存在,單純提車,其實我們無法知道是什麼車,可能是公車、房車、跑車...等,但如果指的是GTR、Yaris、TIIDA,我們就可以知道是哪台車了,至於屬性就更明確了,油耗、馬力、價格...等都可以視為車的屬性。
那OOP有什麼好處呢?
我大概簡略的舉一個範例
<?php
class Car
{
// 這樣是一個類別的程式
}
?>
我們可以使用new 一個類別
$bmw = new Car;
<?php
class Car
{
public $color = '';
public $name = '';
public function setColor($val)
{
$this->color = $val;
}
public function getColor()
{
return $this->color;
}
public function setName($val)
{
$this->name = $val;
}
public function getName()
{
return $this->name;
}
}
$carA = new Car;
$carA->setColor('black');
$carA->setName('bmw');
echo $carA->getColor();
echo $carA->getName();
var_dump($carA);
$carB = new Car;
$carB->setColor('red');
$carB->setName('toyota');
echo $carB->getColor();
echo $carB->getName();
var_dump($carB);
?>
從上面的程式可以了解到我們定義了車這個類別,有顏色及名字這兩種屬性,當無論是何種物件的車放進來都可以使用。當然以OOP來說這只是非常基礎的範例,OOP還有其他更多更深的部分,我就起個頭就好了。所以從上面的例子來看 通常 -> 就是指的是在物件的情況下使用喔。(可能你所參考的範例已經有人包好一個class給你,所以可以用 ->去使用)
阿~~~~~~~~OOP好難解釋阿~不清楚的真得自行google好了!所以當看到使用->的時候就可以知道自己是在呼叫一個類別的東西來用囉!
我們來新增一個model,鑒於原本有內建的,所以我們更改一下名稱php artisan make:model UserTable
也來建立一下測試用的controllerphp artisan make:controller UserController
新增一下路由Route::get('/user', 'UserController');
然後到controller 新增一下function
public function __invoke()
{
$Users = UserTable::all();
foreach ($Users as $User) {
echo $User->name."<br>";
}
}
記得在上方也加入use App\UserTable;
Model也需要調整一下(檔案在app下的UserTable.php)
class UserTable extends Model
{
protected $table = 'users';
protected $fillable = [
'name',
'email',
];
}
$fillable是允許可以大量新增、修改的欄位
$guarded:設定需要被保護的欄位