前言

測試目的

  1. 避免改了A壞了B
  2. 為了不要讓未來的自己和後人踩坑

目標

  1. 核心功能的API/Service/Repository撰寫測試。
  2. 當有Call到外部API,必須要Mock起來。
  3. 自動化測試流程。

前置作業

  1. 若你是用VSCODE開發的話,可以安裝PHPUnit Test Exploer,圖形化介面讓我們可以直接點選要跑的測試,推推!
  2. 了解 Laravel 測試方法: Laravel Testing: Getting Started

基本知識

  1. 測試資料庫存取時,要儘可能不動到正式資料庫,因此看各位的需求,可以開一台測試 …


  1. Strategy Pattern 策略模式
  2. Simple Factory Pattern 簡單工廠模式
  3. Adapter Pattern 轉接器模式
  4. Decorator Pattern 裝飾者模式
  5. Chain of Responsibility Pattern 責任鏈模式
  1. Strategy Pattern …


  1. Basics
  • A class may contain:
  • new: 以new ClassName() 建立一個物件實例,除非有自行定義 constructor
  • Object Assignment : ​Store in different data slot but same object handle,Variable Assignment :​ 右邊表達式的值Copy一份傳給左邊(call by value)
$assign = $instance; // Object assign! 
$instance -> var; // $assign will ha …

  1. if / elseif /else
  • Syntax: (can be nested)
if (expr) { 
statement
} elseif (expr) {
statement
} else {
statement
}
  • Syntax:
while (expr) { 
statement
}
  • 第一次迭代一定會執行!
  • 表達式的值在每次循環結束後檢查 → do-while
  • 表達是的值在每次循環開始時檢查 → while
  • Syntax:
$x = 0; 
do{
echo $x;
} while ($x > 0) ; //return 0
  • Syntax:
for ( expr1; expr2; expr3) { 
statem …


  1. User-defined functions
  • 後面定義的 functions可以在前面呼叫它,但要注意下面兩種情形:
實際上的應用如下,如果不存在,再放上function。
if (! function_exists(‘cdnify’)) {
function cdnify($path, $withMixed = true) { ……. }
}
  • PHP supports passing arguments in four methods:

  1. Assignment Operators
  • 基本的賦值運算符是“=”,會將​右邊表達式的值Copy一份傳給左邊(call by value) ,但要注意Object Assignment是個特例
  • 組合運算符(Combined operators):
Addition:       $a += $b       $a = $a + $b 
Subtraction: $a -= $b $a = $a — $b
Multiplication: $a *= $b $a = $a * $b
Division: $a /= $b $a = $a / $b
Modulus: $a %= $b $a = $a % $b
Concatenate: $a .= $b $a = $a . $b
var_dump(“1” == “01”) //true
  • Equal (==) & Identical (===) & Spaceship (<=>)
  • Ternary operator 常用的技巧,如果只有一層,可讀性還可以
$title = isset($photo- > title) ? …

  1. Basic
  • PHP 中的變數用一個$符號後面跟變數名來表示。
ex: $var = ‘Bob’
  • Call by value && Call by reference:
  • 常使用isset()來檢測一個變數是否已被初始化。ex:
$title = isset($photo → title) ? $photo → title : ‘ ‘ ; 
  • 可變變量(Variable variables): 拿普通變量的值作為此可變變量的變量名稱。 ex:
$b = ‘hello’; 
$$b = ‘world’;
echo “$b”; //echo ‘hello’
echo “${$b}”; //echo $hello → world
  • 在使用laravel framework的情況下,static variable 會被使用到的機會十分的低。
  • static variable 會用在第一次被init 後,就能一直被reuse or access的東西,而且會記住上一次 的結果。 以下面的例子來說,如果你想從你的code 開始跑,就有一塊memory 被init ,之後只要在 function 內對static variable 操作,他都是會操作同一個memory。
function add_static(){ 

static $a = 0; //將此變數記錄在一塊memory當中

$a++;

return $a;

}

echo add_static(); //echo 1

echo add_static(); //echo 2

  1. Introduction
  • boolean
  • integer
  • float
  • point numbers
  • string
  • array
  • object
  • callable
  • iterable
  • resource
  • NULL
  • 將值轉換為boolean的方式 → (bool) or (boolean) cast
  • 下面這些當轉換為 boolean 時都會被視為False
  • 將值轉換為Integer的方式 → (int) or (integer) cast or intval() function
  • 若欲取整數 → round($var, $precision=0) or floor()
  • 將值轉換為String的方式 → (string) cast or strval() function
  • 一個字串可以用下列4 種方式表示:

前言

  1. Introduction
  2. Booleans
  3. Integers
  4. Floating point numbers
  5. Strings
  6. Arrays
  7. Objects
  8. NULL
  9. Type Juggling
  1. Basics
  2. Variable variables
  3. Static Variables
  1. Assignment Operators
  2. Comparison Operators
  3. Incrementing/Decrementing Operators
  4. Logical Operators
  5. String Operators
  6. Type Operator
  1. User-defined functions
  2. Function arguments
  3. Returning values
  4. Variable functions
  5. Internal (built-in) functions
  6. Anonymous functions(Closures)
  1. if / elseif /else
  2. while
  3. do-while
  4. for
  5. foreach
  6. break
  7. continue
  8. switch
  9. return
  1. Basics
  2. Properties
  3. Visibility
  4. Class Constant
  5. ​Constructors and Destructors
  6. Object inheritance
  7. Scope Resolution Operator (::)
  8. Static
  9. ​Object interface
  10. Traits
  11. Type Hinting( = Type declaration)

前言

密碼學分類

  1. 編碼&解碼(Encode&Decode)
  2. 單向雜湊(One Way Hash)
  3. 對稱性加密&解密
  4. 非對稱性加密&解密

編碼&解碼

Andy Chou

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store