정적 함수 내에서 사용하면 실패합니다.
$ this를 사용하고 싶은이 방법을 얻을 수 있습니다. 치명적 오류 : SQL 개체가 아닐 때 $ this 사용.
이 작업을 수행해야합니까?
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
이것이 올바른 방법입니다.
public static function userNameAvailibility()
{
$result = self::getsomthin();
}
self::
대신 정적 메서드$this->
를 사용하십시오 .
참조 : 자세한 정보는 PHP 정적 메서드 튜토리얼 :)
$this
정적 함수는 인스턴스화 된 개체와 독립이기 때문에 정적 함수 내에서 사용할 수 없습니다 . 함수를 정적으로 만들지 발.
편집 : 정의에 따라 인스턴스화 된 개체없이 정적 메서드를 호출 할 수 있기 $this
때문에 정적 메서드 내부에서 의미있는 없습니다 .
접근 this
자는 클래스의 현재 인스턴스를 참조합니다. 정적 메소드는 인스턴스에서 실행되지 않습니다 this
. 따라서 여기에서 직접 메서드를 호출해야합니다. 정적 메소드는 인스턴스 범위의 모든 항목에 액세스 할 수 없지만 인스턴스 범위 외부의 클래스 범위에있는 모든 인스턴스 범위에 액세스합니다.
self ::를 사용하여 정적 함수 내에서 정적 함수 만 호출 할 수 있습니다. 클래스에 사용하려는 비 정적 함수가 선언되어 있고 클래스의 인스턴스를 사용할 수 있습니다.
<?php
class some_class{
function nonStatic() {
//..... Some code ....
}
Static function isStatic(){
$someClassObject = new some_class;
$someClassObject->nonStatic();
}
}
?>
다음은 클래스의 메서드가 잘못된 방식으로 호출 될 때 발생하는 일입니다. 이 코드를 실행하면 몇 가지 경고가 표시 작동하고 다음과 같이 인쇄됩니다. "나는 A : B 속성 인쇄". (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 변수가 "호출자"클래스의 인스턴스를 가리킴을 확인합니다. 위의 예에는 B의 속성을 가리키는 A 클래스에 사용 된 $ this-> property가 있습니다.
편집하다:
의사 변수 $ this는 객체 컨텍스트 내에서 메서드가 호출 될 때 사용할 수 있습니다. $ this는 호출 객체에 대한 참조입니다 ( 보통 메서드가 속한 객체이지만 메서드가 보조 객체의 컨텍스트에서 정적으로 호출되는 경우 다른 객체 일 수 있음 ). PHP> 기초
PHP가 충분한 설명 오류를 표시하지 않는 것은 유감입니다. $ this->는 정적 함수 내에서 사용할 수 없습니다. 동일한 클래스 내에서 함수를 호출해야하는 경우 self ::를 사용하세요.
참고 URL : https://stackoverflow.com/questions/2286696/using-this-inside-a-static-function-fails
'ProgramingTip' 카테고리의 다른 글
Netbeans에서 여러 줄의 코드 편집 (0) | 2020.11.20 |
---|---|
Linux에서 프로세스에 대해 kill -9가 효과가있는 것이 어떻게 가능합니까? (0) | 2020.11.20 |
터치 누름 대 긴 누름 대 움직임 감지? (0) | 2020.11.20 |
Vim을 사용하여 이전 줄로 돌아 가기 (0) | 2020.11.20 |
Python, 목록을 고정 크기로 강제 (0) | 2020.11.20 |