[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)가 간결하기는 하다.

2024/07/11 21:29 2024/07/11 21:29
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요