이 방법을 사용하면 $ this를 사용할 수 있지만 얻을 수있는 것은 다음과 같습니다. 치명적인 오류 : 개체 컨텍스트가 아닌 경우 $ this를 사용합니다.정적 함수 내부에서이 함수를 사용하면 실패합니다.
어떻게 작동합니까? 정적 함수는 모든 인스턴스 개체의 독립적이기 때문에
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
이 방법을 사용하면 $ this를 사용할 수 있지만 얻을 수있는 것은 다음과 같습니다. 치명적인 오류 : 개체 컨텍스트가 아닌 경우 $ this를 사용합니다.정적 함수 내부에서이 함수를 사용하면 실패합니다.
어떻게 작동합니까? 정적 함수는 모든 인스턴스 개체의 독립적이기 때문에
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
이 올바른 방법
public static function userNameAvailibility()
{
$result = self::getsomthin();
}
에게 정적 메서드에 대한 사용 self::
대신 $this->
입니다.
참조 : 자세한 정보 : 대한 PHP Static Methods Tutorial
당신은 정적 함수 내에서 $this
을 사용할 수 없습니다. 함수를 정적으로 만들지 마십시오.
편집 : 정의에 는 정적 메서드는 인스턴스 객체없이 호출 할 수 있으며, 따라서 정적 메소드 내부 $this
의 의미있는 사용은 없다.
이 있어야 할 때 정적을 할당하려고 변수를 인스턴스 변수로 변경하십시오. 이게 가능하지 않니? – Jom
접근 자 this
은 클래스의 현재 인스턴스를 참조합니다. 정적 메서드는 인스턴스에서 실행되지 않으므로 this
을 사용하면 금지됩니다. 그래서 여기에서 직접 메서드를 호출해야합니다. 정적 메서드는 인스턴스의 범위에있는 아무 것도 액세스 할 수 없지만 인스턴스 범위 밖에있는 클래스 범위의 모든 항목에 액세스합니다.
클래스는 다음 인스턴스를 선언 할 수 있습니다 사용하려는 비 정적 기능을 포함하는 경우 같은 클래스의
<?php
class some_class{
function nonStatic() {
//..... Some code ....
}
Static function isStatic(){
$someClassObject = new some_class;
$someClassObject->nonStatic();
}
}
?>
PHP는 설명이 부족합니다. 정적 함수 안에서 $ this->를 사용할 수는 없지만 같은 클래스 안에서 함수를 호출해야한다면 self ::를 사용하십시오
다음은 클래스의 메소드가 호출 될 때 일어나는 일례입니다 잘못된 길. 이 코드를 실행할 때 몇 가지 경고가 표시되지만 제대로 작동하고 "I 'm A : printing B property"가 인쇄됩니다.
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();
이 정적 메소드 호출되는 방법에 사용되는 변수 $이, 상기 "호출자"클래스의 인스턴스를 가리키는 솔기 (php5.6 실행). 예에서 위의 B.
편집의 특성을 가리키는 클래스에 사용되는 $ this-> 특성이있다 :이
The pseudo-variable $this is available when a method is called from within an object context. $this is a reference to the calling object (usually the object to which the method belongs, but possibly another object, if the method is called statically from the context of a secondary object). PHP > The Basics
사실, 나는이 대답을 올리려고하고 있었다. –
getsomthin() 메서드도 정적이어야 함을 기억해야합니다. 정적 메서드 내에서 비 정적 메서드를 호출 할 수는 없습니다. – thorinkor
@Sarfraz,'self ::'대신'static ::'이되어서는 안될까요? – Pacerier