이 글에 소개된 내용은 PHP 객체지향의 정적 속성과 정적 메서드의 123개 다이어그램으로, 이제 모든 사람과 공유되며, 도움이 필요한 친구들이 참고할 수 있습니다
/*
속성 및 메서드 앞에 정적 수정 추가
, 이를 정적 속성/정적 메서드라고 합니다.
정적 속성
정적 속성은 클래스 공간
1에 저장됩니다. 해당 속성은 이미 존재하므로 액세스하기 위해 개체에 의존할 필요가 없습니다. 2. 클래스는 메모리에 하나만 있으므로 정적 속성은 하나만 있습니다.
*/
class Human { static public $head = 1; public function changeHead() { Human::$head = 9; } public function getHead() { return Human::$head; } }echo Human::$head; //1// 静态属性的访问方法echo '<br >';// 静态属性只有一个,为所有的对象的共享.$m1 = new Human();$m1->changeHead();$m2 = new Human();$m3 = new Human();echo $m2->getHead(),'<br >'; //9echo $m3->getHead(),'<br >'; //9
Static 메소드
클래스에도 저장된 정적 메서드는 1개만 저장됩니다
일반 메서드는 개체를 동원해야 하고 $this를 바인딩해야 합니다.
즉, 일반 메서드는 개체가 있어야 하며 개체와 함께 동원되어야 합니다
즉, 클래스 이름을 통해 정적 메서드를 동원할 수 있습니다. *
요약:
위에서 분석했듯이 실제로 비정적 메서드는 클래스 이름으로 정적으로 호출할 수 없습니다.
class Human2 { public $name = '张三'; static public function cry() { echo '5555'; } public function eat() { echo '吃饭'; } public function intro() { echo $this->name; } }// 此时一个对象都没有Human2::cry();// 下面这个eat是非静态方法,应由对象来调用Human2::eat();/* 报错提示: Strict standards: Non-static method Human2::eat() should not be called statically */echo '<br >';//Human2::intro();/* 直接报错: Fatal error: Using $this when not in object context */
Class- >동적 메소드 메소드에 이것이 없으면 심각하게 지원되지 않습니다. 논리적으로 설명하면 안됩니다.
객체->동적 메소드 액세스 가능객체->정적 메소드 가능
*/
관련 권장 사항:
객체 지향 PHP의 상속, 다형성 및 캡슐화 소개
php 객체 지향 설계 원리 개요
위 내용은 PHP 객체 지향 노트 - 123 정적 속성 및 정적 메서드 그림의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!