>백엔드 개발 >PHP 튜토리얼 >PHP 정적 멤버 함수의 효율성 문제 분석

PHP 정적 멤버 함수의 효율성 문제 분석

伊谢尔伦
伊谢尔伦원래의
2017-06-30 11:15:041346검색

많은 PHP 개발자는 클래스의 staticmembersfunctions을 사용하는 것이 클래스의 일반 멤버 함수를 사용하는 것보다 더 효율적이라는 것을 알고 있습니다. 이 문서에서는 애플리케이션 수준에서 이 문제를 분석합니다

다음은 예입니다.

<?php // php静态方法测试
header(&#39;Content-Type: text/html; charset=utf-8&#39;);
class xclass{
     public 
static
 $var1 = &#39;1111111111111111&#39;;
     public $var2 = &#39;aaaaaaaaaaaaa&#39;;
     public function construct()
    {
         $this -> var2 = &#39;bbbbbbbbbbbbbbbb&#39;;
         }
     public static function secho1()
    {
         echo self :: $var1 . &#39;<hr />&#39;;
         }
     public function secho2()
    {
         echo $this -> var2 . &#39;<hr />&#39;;
         }
     public function secho3()
    {
         echo &#39;cccccccccccccc<hr />&#39;;
         }
     }
 xclass :: secho1();
 xclass :: secho3();
 echo "------------------------------<br />";
 $xc = new xclass();
 $xc -> secho1();
 $xc -> secho2();
 ?>


진지하게 위의 예를 살펴보면 흥미로운 점을 발견할 수 있습니다. secho1()은 정적 메서드로 정의된 후에도 동적 클래스의 객체 인스턴스에서 여전히 동적 메서드로 참조될 수 있으며 secho3()은 다음과 같습니다. 이 수준에서는 정적 멤버 함수가 동적 멤버 함수보다 빠른 이유를 이해하는 것이 어렵지 않습니다. 호환성 때문에

PHP의 클래스 멤버는 동적과 정적을 명확하게 구분하지 않습니다. 모든 멤버는 정적 멤버로 간주되어 명시적인 선언 없이 특정 메모리 영역에 저장됩니다

. 따라서 정적을 멤버 함수라고 합니다. 매우 빠르게 일반 함수를 호출합니다. 하지만 동적 클래스를 호출하는 것은 이 클래스 구조를 샘플로 사용하여 메모리에

객체

인스턴스를 재생성하므로 간단한 클래스의 경우에는 큰 문제가 아닐 수 있습니다. 복잡한 클래스의 경우 이는 분명히 효율성에 영향을 미칩니다. 어떤 사람들은 정적 메서드를 사용하면 과도한 메모리 사용이 발생하지 않을까 걱정할 수 있습니다. 실제로 위의 분석을 통해 정적 메서드를 선언하지 않으면 시스템이 여전히 멤버를 정적으로 처리한다는 것을 알 수 있습니다. 완전히 정적 메서드를 사용하는 클래스와 동적이지만 인스턴스 개체를 선언하지 않는 완전히 동일한 클래스는 거의 동일한 메모리를 차지하므로 보다 직접적인 논리를 위해서는 정적

멤버 메서드

를 직접 사용하는 것이 좋습니다. 논리 지향적인 경우 정적 클래스를 완전히 사용하는 것도 가능하지만, 그렇다면 클래스의 의미를 잃게 됩니다. 그렇다면 왜 OOP에 신경을 써야 할까요? 사용법에 따라 정적 메서드는 특히 논리 클래스에 적합합니다. MVC 패턴.

위 내용은 PHP 정적 멤버 함수의 효율성 문제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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