記錄一下這兩天踩的大坑吧

目標:在 docker 容器裡面做 migration

第一個大坑,migration 應該要在哪裡做?

應該做在存放 migration codes 的容器裡。

Step 1 : 進入要做 migration 的容器,下指令:

docker exec -it <container name> /bin/sh

開啟終端機之後,確認 php command 可以使用,

如果不行用,先將 $PATH 初始到 /usr/local :

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

再下

php -i | grep php.ini

找出 php location

我的是 /usr/local/etc/php/8.0

所以 $PATH 要加上這段:

export PATH=$PATH:/usr/local/etc/php/8.0

這時候下 php artisan migrate 指令,就可以成功的 migration 了

--

--

This chapter tell us the ES6 features.

  1. declaring variable : const, let, and var
  2. template literal
  3. arrow function
  4. transpile es6 : some browsers are not supporting es6 features (e.g., arrow function), then tools like babel could help you transpile your script. Unlike compile, transpile won’t return binary.
  5. destructing assignment
  6. spread…

--

--

在ES6最具特色的特徵其中之一便是「Arrow functions」,其幫助開法者「節省時間,簡化函式的作用域」。

節省時間及行數

一樣的結果,傳統函式需要兩行的空間;ES6的箭頭函式只要一行就可以實現,當我們撰寫程式時,這會讓我們省下時間。

Arrow functions沒有自己的 This

<ES5函式宣告>

--

--

JS的「作用域」能將變數限制在函示、區塊中,當然還有自由調用的全域變數。

var的作用域屬於「函式作用域」,也就是當我在函式中藉由var宣告一變數,是無法在外部呼叫它的。

let、const屬「區塊作用域」,也就是當我在含有{}這個block裏頭,透過let,const宣告個變數,是無法在{}block以外調用它的。

--

--

根據MDN Getter 和Setter的定義:Setter會幫你定義特定物件的屬性,Getter會幫你取得特定物件屬性的值。你可以在所有預先定義的使用者物件中定義set以及get。

我直接在wallet這個物件的定義裏頭,定義了set,get(橘匡),根據JS的語法作用域,想要取得外層的total這個屬性,可以藉由this來取得之。

<注意>setter 和 getter可以有同樣的名字,在使用setter — save時,方法很特別,不是透過括號的方式將argument傳入,而是透過assignment(等號)將引述傳入噢!!!

--

--