Trong PHP (và OOP nói chung), hàm (function) và phương thức (method) gần giống nhau về bản chất, nhưng khác nhau về phạm vi, cách gọi và mục đích sử dụng. Dưới đây là cách hiểu chuẩn – đúng thuật ngữ – dễ nhớ.
Hàm là đoạn mã độc lập, không thuộc về class nào.
function sum($a, $b) {
return $a + $b;
}
echo sum(3, 5);
👉 Hàm có thể gọi trực tiếp, ở bất kỳ đâu (nếu trong scope).
Phương thức là hàm nằm bên trong class, và phải gọi thông qua object hoặc class.
class Calculator {
public function sum($a, $b) {
return $a + $b;
}
}
$cal = new Calculator();
echo $cal->sum(3, 5);
👉 sum() lúc này là method, không còn là function.
| Tiêu chí | Hàm (Function) | Phương thức (Method) |
|---|---|---|
| Thuộc về | Không thuộc class | Thuộc class |
| OOP | ❌ Không | ✅ Có |
| Cách gọi | sum() | $obj->sum() |
Truy cập $this | ❌ Không | ✅ Có |
| Access modifier | ❌ Không | public / protected / private |
| Static | ❌ | ✅ |
| Tính đóng gói | ❌ | ✅ |
$this – điểm khác biệt quan trọng$thisfunction test() {
echo $this->name; // ❌ lỗi
}
$thisclass User {
public $name = "Nam";
public function showName() {
echo $this->name;
}
}
class Math {
public static function square($x) {
return $x * $x;
}
}
echo Math::square(5);
function square($x) {
return $x * $x;
}
🔍 Khác nhau:
format_date(), slugify()$this)📌 Framework (CI, Laravel, WP) → gần như toàn method
class Post_model extends CI_Model {
public function getById($id) {
return $this->db->get_where('posts', ['id' => $id])->row();
}
}
➡ getById() = method
➡ $this->db = trạng thái của object
🔹 Function = độc lập
🔹 Method = function + class
Hoặc:
❝ Method chính là function sống trong class ❞
👉 Có về mặt kỹ thuật, nhưng khác về ngữ cảnh sử dụng
👉 ❌ Không (trừ static gọi qua ::)