이 기사의 예는 PHP 객체지향에서 정적 속성과 메소드의 메모리 위치를 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
static 정적 속성의 메모리 위치 -> 객체가 아닌 클래스입니다. 그것을 증명하기 위해 테스트를 해보자
<?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; ?>
출력 결과를 볼 수 있습니다:
1. echo Human:$name: 클래스가 선언된 후 객체에 의존하지 않는 정적 속성이 있습니다. 따라서 정적 속성은 하나만 있습니다(즉, 메모리에는 저장 위치가 객체에 없음을 의미합니다. 객체에 있는 경우 객체를 인스턴스화하면 height 속성과 같은 해당 정적 위치가 있게 됩니다). );
2. print_r($p1): 인쇄 결과에는 높이 속성만 있고 이름은 없습니다.
3. 정적 속성 값이 변경되면 모든 객체의 속성 값이 영향을 받습니다.
정적이든 일반이든 메서드는 클래스 메모리 공간에 존재합니다. 증명도 매우 간단합니다. 새 객체와 print_r(객체)을 생성하기만 하면 됩니다.
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.