>  기사  >  백엔드 개발  >  PHP_php에서 정적 메소드를 사용할 때 주의할 사항 몇 가지 팁

PHP_php에서 정적 메소드를 사용할 때 주의할 사항 몇 가지 팁

WBOY
WBOY원래의
2016-05-16 20:36:09912검색

이 기사의 예에서는 PHP에서 정적 메소드를 사용할 때 몇 가지 일반적인 예방 조치를 소개합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법은 다음과 같습니다.

1. 클래스의 메서드가 정적으로 선언되지 않았지만 변경 가능한 클래스 멤버 변수를 사용하지 않더라도 연산자::를 사용하여 ;

2.

(: 연산자를 사용하여) 정적으로 호출되는 메소드의 $this 값은 정의된 클래스가 아니라 호출 컨텍스트에 따라 결정됩니다. !!

예를 들어 다음 코드는 다음과 같습니다.

<&#63;php 
class TestClass1 
{ 
  public $normal_v = 'normal_v from TestClass1'; 
  public static $STATIC_V = 'STATIC_V from TestClass1'; 
  public function test_func1() 
  { 
    echo $this->normal_v.'<br />'.self::$STATIC_V; 
  } 
} 
class TestClass2 
{ 
  public $normal_v = 'normal_v from TestClass2'; 
  public static $STATIC_V = 'STATIC_V from TestClass2'; 
  public function test_func2() 
  { 
    TestClass1::test_func1(); 
  } 
} 
$t2 = new TestClass2(); 
$t2->test_func2(); 

이 코드의 출력은 무엇입니까? TestClass1의 Normal_v df250b2156c434f3390392d09b1c9563 TestClass1의 STATIC_V가 잘못된 것으로 나타났습니다.

TestClass2의 Normal_v

TestClass1의 STATIC_V

참고: test_func1()은 TestClass1에 정의되어 있지만 TestClass2에서 호출되며 내부 $this 변수는 TestClass2에 의해 결정됩니다!

사실 이 두 클래스의 관계는 "양방향 연관"이어야 합니다.

관심 있는 친구들은 이 기사의 예를 테스트하고 실행할 수 있으며, 새로운 이득이 있을 것이라고 믿습니다!

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