iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

從0開始-30天摸索laravel系列 第 23

DAY23: ORM續談 - OOP

  • 分享至 

  • xImage
  •  

寫到一半,突然想到會不會有朋友不太清楚為什麼有時候是使用->有時候是用=的原因?
所以先插入一小段的基礎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

也來建立一下測試用的controller
php 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:設定需要被保護的欄位


上一篇
DAY22: ORM上菜囉
下一篇
DAY24: ORM續談
系列文
從0開始-30天摸索laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言