[PHP] Non-static method cannot be called statically
class Class_Name {
function Method_name($param1 = null, $param2 = null) {
...
}
}
Class_name::Method_name($a, $b);
PHP 8 이상에서 위처럼 non-static 메소드를 static 메소드처럼 다루면 아래와 같은 오류가 날 수 있다.
PHP Fatal error: Uncaught Error: Non-static method Class_name::Method_name() cannot be called statically in /.../.../???.php:115
다음 두 가지 방법으로 이 오류를 없앨 수 있다.
(1) static 메소드로 바꾸기
클래스의 메소드를 non-static에서 static 메소드로 바꾸면 메소드를 이용하는 곳의 부호글은 고치지 않아도 된다.
static class Class_Name {
static function Method_name($param1 = null, $param2 = null) {
...
}
}
Class_name::Method_name($a, $b);
(2) non-static 메소드에 맞는 접근 방식으로 바꾸기
메소드를 이용하는 곳의 접근 방식을 non-static 메소드에 맞게 고친다.
static class Class_Name {
static function Method_name($param1 = null, $param2 = null) {
...
}
}
(new Class_name)->Method_name($a, $b);
클래스의 멤버 함수(메소드) 하나를 한 번만 쏙 뽑아 쓰는 때에는 (2)보다 (1)가 간결하기는 하다.
덧글을 달아 주세요