>백엔드 개발 >PHP 튜토리얼 >PHP8.0에서 클래스의 정적 메서드와 비정적 메서드의 차이점

PHP8.0에서 클래스의 정적 메서드와 비정적 메서드의 차이점

WBOY
WBOY원래의
2023-05-14 08:13:351341검색

인터넷 기술의 지속적인 발전과 함께 널리 사용되는 개발 언어인 PHP도 지속적으로 업데이트되고 반복됩니다. 최신 PHP8.0 버전에는 클래스의 정적 메서드와 비정적 메서드 간의 차이점에 몇 가지 새로운 변경 사항이 있습니다. 이 기사에서는 PHP8.0 클래스의 정적 메소드와 비정적 메소드의 차이점을 자세히 소개합니다.

1. 클래스의 정적 메서드

클래스의 정적 메서드는 사용 시 객체를 인스턴스화할 필요가 없습니다. PHP8.0 버전에서는 클래스의 정적 메서드 방식을 사용하여 직접 호출할 수 있습니다. 정의된 내용이 이전과 달라진 점도 있습니다. 이전 버전에서는 정적 메서드를 정의하려면 메서드 본문 앞에 "static" 키워드를 추가해야 했지만 PHP8.0에서는 이것이 필요하지 않습니다. 즉, PHP8.0에서는 클래스의 정적 메서드를 비정적 메서드와 함께 사용할 수 있습니다. .같은 방식으로 정의합니다.

클래스의 정적 메서드는 클래스 이름과 개체 이름을 통해 호출할 수 있지만 정적이 아닌 멤버와 메서드에는 액세스할 수 없습니다. 동시에 클래스의 정적 메서드는 개체를 인스턴스화할 필요가 없으므로 self, static, parent 등의 키워드를 사용하여 클래스의 멤버와 메서드를 참조할 수 있습니다.

다음은 클래스의 정적 메서드 사용을 보여주는 간단한 샘플 코드입니다.

class Test {
    public static $name = 'PHP8.0';
    
    public static function printName() {
        echo self::$name;
    }
}

// 调用类的静态方法
Test::printName(); // 输出 PHP8.0

2. 클래스의 비정적 메서드

클래스의 비정적 메서드는 개체를 인스턴스화하여 호출해야 하며, 클래스의 정적 멤버 및 메서드에 액세스할 수 있습니다. PHP8.0에서는 이전 버전과 비교하여 클래스의 비정적 메서드를 정의하는 방식이 변경되지 않았습니다.

다음은 클래스의 비정적 메서드 사용을 보여주는 간단한 샘플 코드입니다.

class Person {
    public $name;
    
    public function setName($name) {
        $this->name = $name;
    }
    
    public function getName() {
        echo $this->name;
    }
}

// 实例化对象
$person = new Person();

// 调用类的非静态方法
$person->setName('Tom');
$person->getName(); // 输出 Tom

3. 클래스의 정적 속성

클래스의 정적 메서드와 비정적 메서드 외에도 PHP8. 0에서는 클래스의 정적 속성도 도입되었습니다. 이전 버전에서는 정적 속성을 사용하려면 클래스 정의에서 "static" 키워드를 사용하여 선언해야 했지만, PHP8.0에서는 이것이 필요하지 않습니다. 즉, 비정적 속성과 동일한 방식으로 선언할 수 있습니다. 동시에 클래스의 정적 속성은 클래스를 따르기 때문에 개체를 인스턴스화하지 않고도 어느 위치에서나 읽고 수정할 수 있습니다.

다음은 클래스의 정적 속성 사용을 보여주는 간단한 샘플 코드입니다:

class User {
    public static $count = 0;
    
    public function __construct() {
        self::$count++;
    }
    
    public static function getCount() {
        echo self::$count;
    }
}

// 创造对象
$newUser1 = new User();
$newUser2 = new User();

// 调用类的静态方法,获取对象数量
User::getCount(); // 输出 2

IV 요약

요약하자면, PHP8.0에서 클래스의 정적 메서드와 비정적 메서드의 차이점은 그리 크지 않습니다. 큰 변화는 그것이 정의되는 방식에 있습니다. 동시에, PHP8.0에는 객체를 인스턴스화하지 않고도 데이터를 저장하고 공유할 수 있도록 클래스의 정적 속성이 추가되었습니다. 실제 개발에서는 최적의 효과를 얻으려면 특정 상황에 따라 클래스의 정적 메서드, 비정적 메서드 또는 정적 속성을 사용하도록 선택해야 합니다.

위 내용은 PHP8.0에서 클래스의 정적 메서드와 비정적 메서드의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.