>백엔드 개발 >PHP 튜토리얼 >PHP 객체 지향_php 기술의 정적 정적 속성 및 메소드의 메모리 위치 분석

PHP 객체 지향_php 기술의 정적 정적 속성 및 메소드의 메모리 위치 분석

WBOY
WBOY원래의
2016-05-16 20:23:481138검색

이 기사의 예는 PHP 객체지향에서 정적 속성과 메소드의 메모리 위치를 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

static 정적 속성의 메모리 위치 -> 객체가 아닌 클래스입니다. 그것을 증명하기 위해 테스트를 해보자

<&#63;php
header("content-type:text/html;charset=utf-8");
class Human{
 static public $name = "小妹";
 public $height;
 public function tell(){
 }
}
echo Human:$name;
//不依赖于对象,就能直接访问。因为静态属性的内存位置是在类里,而不是对象。
$p1 = new Human();
$p2 = new Human();
print_r($p1);
echo $p1::$name = "夫人";
//在$p1对象上改变静态属性的值,那$p2对象也会相应的改变。
echo $p2::$name;
&#63;>

출력 결과를 볼 수 있습니다:

1. echo Human:$name: 클래스가 선언된 후 객체에 의존하지 않는 정적 속성이 있습니다. 따라서 정적 속성은 하나만 있습니다(즉, 메모리에는 저장 위치가 객체에 없음을 의미합니다. 객체에 있는 경우 객체를 인스턴스화하면 height 속성과 같은 해당 정적 위치가 있게 됩니다). );

2. print_r($p1): 인쇄 결과에는 높이 속성만 있고 이름은 없습니다.

3. 정적 속성 값이 변경되면 모든 객체의 속성 값이 영향을 받습니다.

정적이든 일반이든 메서드는 클래스 메모리 공간에 존재합니다. 증명도 매우 간단합니다. 새 객체와 print_r(객체)을 생성하기만 하면 됩니다.

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

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