PHP가 아닌 속성 후크

Mary-Kate Olsen
풀어 주다: 2024-10-09 06:13:29
원래의
653명이 탐색했습니다.

Property Hooks no PHP

11월에는 우리가 사랑하는 PHP 버전 8.4를 출시할 예정이며, 이를 통해 커뮤니티에서 오랫동안 기다려온 새로운 기능인 속성 후크를 갖게 됩니다! C#, Swift 및 Kotlin과 같은 다른 언어에서 영감을 받은 이 새로운 기능은 마법의 __set() 및 __get() 메서드의 번거로움을 없애줍니다.

현재 속성을 비공개로 만들지 않고도 getter와 setter를 갖는 방법과 속성과 다른 이름을 가진 두 개의 새로운 메서드를 만드는 방법의 예를 보여 드리겠습니다.

class Foo
{
    private String $bar;

    public function __set($name, $value)
    {
        $this->$name = $value . "!!!"; 
    }

    public function __get($name)
    {
         return "!!!" . $this->$name;
    }
}
로그인 후 복사

__get() 및 __set()을 사용하면 값을 설정할 때와 값을 찾을 때 $bar를 공개 상태로 둘 수 있지만 구현이 다르고 속성과 다른 이름을 가진 메서드를 만들 필요가 없습니다. 시각적인 예에서 사용법은 다음과 같습니다.

$foo = new Foo();

$foo->bar = "new release";
// aqui o valor que ficará salvo seria "new release!!!"

echo $foo->bar; // aqui retornaria "!!!new release!!!"
로그인 후 복사

이제 __get() 및 __set()이 다른 속성과 함께 어떻게 보일지 상상해 보십시오. 완전히 엉망이 됩니다. 이를 수행하는 또 다른 방법은 getBar() 메소드와 또 다른 setBar() 메소드를 생성하는 것입니다. 그러나 이는 하나의 속성만 고려하며 사용법은 이전 속성과 다릅니다.

class Foo
{
    private String $bar;

    public function setBar($value)
    {
        $this->bar = $value . "!!!"; 
    }

    public function getBar()
    {
         return "!!!" . $this->bar;
    }
}

$foo = new Foo();

$foo->setBar('new release');
// aqui o valor que ficará salvo seria "new release!!!"

echo $foo->getBar(); // aqui retornaria "!!!new release!!!"
로그인 후 복사

저는 개인적으로 이 사용 사례에 대한 새로운 메서드를 만드는 것이 약간 짜증스럽다고 생각합니다. 저는 속성의 직접 호출을 사용하여 해당 값을 가져오고 설정하는 것을 선호합니다. 이 새로운 기능은 이러한 혼란을 해결하고 클래스 선언과 함께 get 및 set을 개별적으로 정의할 수 있도록 하기 위해 출시되었습니다.

class Foo
{
    public String $bar {
        set (String $value) => $this->bar = $value . "!!!";
        get => "!!! . $this->bar";
    }
}

로그인 후 복사

이 새 코드는 동일한 작업을 수행하지만 새 메소드를 생성하거나 클래스의 각 속성을 처리해야 하는 __get() 및 __set()을 사용하지 않고 개별적으로 수행합니다.

이제 11월 21일에 출시될 새로운 기능의 출시를 기다리세요!

위 내용은 PHP가 아닌 속성 후크의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿