>백엔드 개발 >PHP 튜토리얼 >PHP에서 정적 메서드 사용에 대한 몇 가지 참고 사항

PHP에서 정적 메서드 사용에 대한 몇 가지 참고 사항

怪我咯
怪我咯원래의
2017-07-05 10:17:481166검색

이 글은 주로 PHP에서 정적메소드를 사용할 때의 몇 가지 주의사항

을 소개합니다. PHP 정적 메소드를 호출하는 기술과 오류가 발생하기 쉬운 점을 예제 형식으로 알려줍니다.

PHP에서 정적 메서드를 사용할 때 몇 가지 일반적인 주의 사항을 소개합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 메소드는 다음과 같습니다. 1.

클래스의 메소드가

static로 선언되지 않았지만 변경 가능한 클래스 멤버 변수를 사용하지 않더라도 연산자를 사용하여 외부에서 호출할 수 있습니다. to call; 2.

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

!!예를 들어, 다음 코드:

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

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

의 TestClass2

STATIC_V

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


실제로 이 두 클래스 간의 관계는 " 양방향 연결" ".

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

위 내용은 PHP에서 정적 메서드 사용에 대한 몇 가지 참고 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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