x();"/> x();">

>백엔드 개발 >PHP 튜토리얼 >h5 PHP5에서 가상함수 구현방법 공유

h5 PHP5에서 가상함수 구현방법 공유

WBOY
WBOY원래의
2016-07-29 08:44:531018검색

아래 코드를 보세요.

코드 복사 코드는 다음과 같습니다.


class A {
공용 함수 x() {
echo "A::x()가 호출되었습니다.n"
}
공용 함수 y() {
self::x() ;
echo "A::y()가 호출되었습니다.n";
}
공용 함수 z() {
$this->x()
echo "A: :z()가 호출되었습니다.n";
}
}
class B extends A {
public function x() {
echo "B::x()가 호출되었습니다.n ";
}
}
$b = new B();
$b->y();
echo "--n";
$b-> ;z() ;
?>


이 예에서 A::y()는 A::x()를 호출하고 B::x()는 A::x를 재정의합니다. () , 그러면 B::y()를 호출할 때 B::y()가 A::x() 또는 B::x()를 호출해야 합니까? C에서 A::x()가 가상 함수로 정의되지 않은 경우 B::y()(즉, A::y())는 A::x()를 호출하고 A::: x()는 virtual 키워드를 사용하여 가상 함수로 정의되며, B::y()는 B::x()를 호출합니다. 그러나 PHP5에서는 가상 함수의 기능이 self 및 $this 키워드로 구현됩니다. 상위 클래스의 A::y()가 self::x()를 사용하여 A::x()를 호출하면 하위 클래스에서는 A::x()가 재정의되었는지 여부에 관계없이 A::y( ) 모두 A::x()를 호출하고 상위 클래스의 A::y()가 $this->x()를 사용하여 A::x()를 호출하는 경우 하위 클래스의 A::y()는 다음과 같습니다. :x()는 B::x()에 의해 재정의되고 A::y()는 B::x()를 호출합니다.
위 예제의 결과는 다음과 같습니다.
A::x()가 호출되었습니다. --
B::x()가 호출되었습니다. :z( )가 호출되었습니다.
virtual-function.php

코드 복사 코드는 다음과 같습니다.


class ParentClass {
정적 공용 함수 say( $str ) {
static::do_print( $str )
}
정적 공용 함수 do_print( $str ) {
echo "< ;p>Parent가 $str

라고 말합니다."
}
}
class ChildClass는 ParentClass를 확장합니다. {
static public function do_print( $str ) {
echo "

하위가 $str

라고 말합니다."
}
}
class AnotherChildClass는 ParentClass를 확장합니다 {
static public function do_print( $str ) {
echo "< ;p>AnotherChild는 $ str

";
}
}
echo phpversion();
$a=new ChildClass();
$a->say( '안녕하세요' ); ​​
$b=new AnotherChildClass()
$b->say( '안녕하세요' );
이상에서는 h5 컨텐츠를 포함하여 h5 PHP5의 가상 함수 구현 방법을 공유하는 방법을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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