>  기사  >  백엔드 개발  >  전달되지 않은 호출 및 PHP에서 전달된 호출의 코드 예

전달되지 않은 호출 및 PHP에서 전달된 호출의 코드 예

不言
不言원래의
2018-08-10 10:37:262491검색

이 기사는 PHP의 비착신 통화 및 착신 전환에 대한 코드 예제를 제공합니다. 필요한 친구가 참고할 수 있기를 바랍니다.

클래스 멤버에 대한 정적 액세스:

1. 전달되지 않은 호출

1) 클래스 이름이 명확함(A::funcA())

2 전달된 호출

    1)self::
    2)parent::
    3)static::
    4)forward_static_call()
    5)get_called_class()

참고:
"늦음" 바인딩" 이는 static::이 더 이상 현재 메서드가 정의된 클래스로 확인되지 않고 실제 런타임에 계산된다는 의미입니다. 정적 메서드 호출에 사용할 수 있으므로(그러나 이에 국한되지는 않음) "정적 바인딩"이라고도 합니다.

<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>
실행 결과:
A
C
C
참고:
비정적 환경에서 호출된 클래스는 객체 인스턴스가 속한 클래스입니다. $this->는 동일한 범위에서 개인 메소드를 호출하려고 시도하므로 static::은 다른 결과를 제공할 수 있습니다. 또 다른 차이점은 static::은 정적 속성에만 사용할 수 있다는 것입니다.

상속된 속성은 귀하의 것입니다

상속 체인. 현재 클래스에 먼저 액세스하고 예약어 특성에 따라 액세스한 다음 상속 체인에 따라 액세스합니다.

$this 액세스 멤버(컨텍스트 호출)

self:: 액세스 멤버(컨텍스트 구문 분석)

<?php
 
class A{
    protected $value = "A value";
 
    public function printValue(){
        echo $this->value;
    }
}
class B extends A{
   protected $value = "B value";
}
$app = new B();
$app->printValue();
运行结果:B value
<?php
 
class A{
    //只有将属性定义为静态的才能使用self::进行调用
    static protected $value = "A static value ";
    public function printValue(){
        echo self::$value;
    }
}
 
class B extends A{
    static protected $value = "B static value";
}
 
$app = new B();
$app->printValue();
运行结果:A static value
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
运行结果:A static value

관련 권장 사항:

PHP는 페이지 점프 기능을 어떻게 구현하려고 합니까? (함수 태그 예시)

PHP 드롭다운 메뉴와 다단계 컬럼은 어떻게 구현하나요? (코드 실제 ​​테스트)

php와 html을 결합하여 이미지 파일을 서버에 업로드하는 코드를 구현합니다

위 내용은 전달되지 않은 호출 및 PHP에서 전달된 호출의 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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