>  기사  >  백엔드 개발  >  PHP 객체 지향에서 정적 속성 및 정적 메서드 호출

PHP 객체 지향에서 정적 속성 및 정적 메서드 호출

WBOY
WBOY원래의
2016-07-29 09:01:00782검색

여기에서는 PHP 객체 지향의 정적 속성 및 정적 메서드 호출을 분석합니다. 그들의 부르심(부름받을 수 있는지, 어떻게 부르는지)에 관해서는 그들이 메모리의 어디에 저장되어 있는지를 이해해야 매우 이해하기 쉽습니다. 정적 속성 및 메서드(정적 및 비정적 포함)는 메모리에서 한 위치만 갖습니다(정적 속성이 아닌 인스턴스화된 개체만큼 많은 속성이 있음).

예:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

header("content-type:text/html;charset=utf-8");

classHuman{

staticpublic$name= "小妹";

public$height= 180;

staticpublicfunctiontell(){

echoself::$name;//静态方法调用静态属性,使用self关键词

//echo $this->height;//错。静态方法不能调用非静态属性

//因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象                                                                                     

 }

 publicfunctionsay(){

 echoself::$name. "我说话了";

 //普通方法调用静态属性,同样使用self关键词

 echo$this->height;

 }

}

$p1= newHuman();

$p1->say(); 

$p1->tell();//对象可以访问静态方法

echo$p1::$name;//对象访问静态属性。不能这么访问$p1->name

//因为静态属性的内存位置不在对象里

Human::say();//错。say()方法有$this时出错;没有$this时能出结果

//但php5.4以上会提示

?>

12

3

4

56

7
8

9

10

1112131415161718192021222324
<?php <🎜>< 🎜>헤더("content-type:text/html;charset=utf-8"); <🎜><🎜>클래스인간{ <🎜><🎜> 정적공개$name= "여동생" <🎜><🎜> 공개$height= 180 <🎜><🎜> 정적< /code><code>공개함수tell(){ <🎜><🎜> 에코</code ><code>self::$name;//정적 메서드는 self 키워드를 사용하여 정적 속성을 호출합니다. <🎜><🎜> //echo $this->height;//틀렸습니다. 정적 메서드는 비정적 속성을 호출할 수 없습니다. //$this는 인스턴스화된 객체를 나타내고 여기에 클래스가 있기 때문에 $this가 어떤 객체를 나타내는지 알 수 없습니다. 🎜> 코드>} 공개함수say(){ echoself::$name."내가 말했다" <code>; //일반 메소드는 self 키워드를 사용하여 정적 속성을 호출합니다. echo$this->height; 🎜> } } $p1= 인간(); $p1->say(); $p1->tell();//객체는 정적 메서드에 액세스할 수 있습니다. 에코$p1::$name;<code>//객체는 정적 속성에 액세스합니다. 이와 같이 $p1->name에 액세스할 수 없습니다. //정적 속성의 메모리 위치가 객체에 없기 때문에 Human::say();//틀렸습니다. say() 메소드에 $this가 있으면 오류가 발생합니다. $this 없이 결과를 얻을 수 있습니다. //그러나 php5.4 이상에서는 메시지가 표시됩니다. ?>
결론: 1. 정적 속성을 호출하려면 self::를 사용하세요. 정적 메서드이든 비정적 메서드이든 정적 속성을 호출할 수 있습니다. 2. 🎜>정적 메소드 비정적 메소드는 self 키워드를 사용하여 호출할 수 있습니다. PHP에서는 self::라는 메서드가 자동으로 정적 메서드로 변환됩니다. 3 정적 메서드는 비정적 속성을 호출할 수 없습니다. 비정적 속성은 인스턴스화되어 객체에 저장되어야 하기 때문입니다. 위 내용은 내용을 포함하여 PHP 객체지향에서 정적 정적 속성과 정적 메서드 호출을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.