Instance method gắn với object (cần new Class()). Static method gắn với class (gọi Class::method()).
Static Method
Dùng khi hành vi không phụ thuộc state của object (giá trị cố định cho mọi instance).
<?php
class Car {
public static function getColor() { return "blue"; }
}
echo Car::getColor(); // blue (không cần new Car())
?>
Instance Method
Dùng khi cần truy cập $this (thuộc tính instance).
<?php
class Employee {
private $name;
public function setName($n) { $this->name = $n; }
public function getName() { return $this->name; }
}
$e = new Employee();
$e->setName("Alex");
echo $e->getName(); // Alex
?>
Chọn cái nào?
- Static: tiện ích (helper), factory, stateless.
- Instance: logic nghiệp vụ, stateful, cần $this.
- Không lạm dụng static: khó test, vi phạm OOP, coupling cứng.