programing

정적 함수 내에서 $this를 사용하면 실패함

minecode 2022. 10. 22. 23:38
반응형

정적 함수 내에서 $this를 사용하면 실패함

$this를 사용하고 싶은 방법이 있지만 얻을 수 있는 것은 치명적인 오류뿐입니다.오브젝트 컨텍스트가 아닌 경우 $this를 사용합니다.

어떻게 하면 작동시킬 수 있을까요?

public static function userNameAvailibility()
{
     $result = $this->getsomthin();
}

이 길이 맞다

public static function userNameAvailibility()
{
     $result = self::getsomthin();
}

사용하다self::대신$this->를 참조해 주세요.

자세한 내용은 PHP Static Methods 튜토리얼을 참조하십시오.

사용할 수 없습니다.$this스태틱 함수는 인스턴스화된 객체와는 독립적이기 때문에 스태틱함수 내에 있습니다.기능을 정적이지 않게 해 주세요.

편집: 정의상 스태틱메서드는 인스턴스화된 오브젝트 없이 호출할 수 있기 때문에 의미 있는 사용은 없습니다.$this정적 메서드 내.

self:를 사용하여 정적 함수 내에서 정적 함수만 호출할 수 있습니다. 클래스에 사용할 정적 함수가 아닌 경우 동일한 클래스의 인스턴스를 선언하고 사용할 수 있습니다.

<?php
class some_class{
function nonStatic() {
    //.....  Some code ....   
    }
 Static function isStatic(){
    $someClassObject = new some_class;
    $someClassObject->nonStatic();
    } 
}
?>

악세사리this는 클래스의 현재 인스턴스를 나타냅니다.정적 메서드는 인스턴스에서 실행되지 않으므로this금지되어 있습니다.여기서 직접 메서드를 호출해야 합니다.스태틱 메서드는 인스턴스 범위 내의 어떤 것도 액세스할 수 없지만 인스턴스 범위 밖의 클래스 범위 내의 모든 항목에 액세스할 수 있습니다.

PHP가 충분히 설명적인 오류를 보이지 않는 것은 유감입니다.스태틱 함수에서는 $this->를 사용할 수 없습니다.같은 클래스 내에서 함수를 호출해야 할 경우 self::를 사용합니다.

다음은 클래스의 메서드가 잘못된 방식으로 호출될 때 발생하는 작업의 예입니다.이 코드를 실행하면 경고가 표시되지만 동작하며 "I'm A: printing B property"라고 인쇄됩니다.(php5.6에서 실행됨)

class A {
    public function aMethod() {
        echo "I'm A: ";
        echo "printing " . $this->property;
    }
}

class B {
    public $property = "B property";

    public function bMethod() {
        A::aMethod();
    }
}

$b = new B();
$b->bMethod();

스태틱 메서드로 호출되는 메서드에서 사용되는 변수 $this가 "caller" 클래스의 인스턴스를 가리킨다는 것을 나타냅니다.위의 예에서는 A 클래스에서 사용되는 $this-> 속성이 B의 속성을 가리키고 있습니다.

편집:

유사 변수 $이것은 오브젝트 컨텍스트 내에서 메서드가 호출될 때 사용할 수 있습니다.$이것은 호출 오브젝트(보통 메서드가 속한 오브젝트이지만 메서드가 세컨더리 오브젝트의 컨텍스트에서 스태틱하게 호출되는 경우에는 다른 오브젝트)에 대한 참조입니다.PHP > 기본

static 메서드에서 속성은 객체가 아닌 클래스용입니다.따라서 객체를 생성하지 않고도 정적 메서드 또는 기능에 액세스할 수 있습니다.$self는 클래스로 만들어진 객체를 가리키지만 $self는 같은 클래스만을 가리킵니다.

언급URL : https://stackoverflow.com/questions/2286696/using-this-inside-a-static-function-fails

반응형