할 일이 없을 때 PHP에서 OO에 대한 정보만 찾아보았더니 액세스 제어 수정자, self, parent, const, static 키워드, arrow operator(책에도 나와있습니다) 라고... 즉 "->"), 범위 파싱 연산자(즉, 이중 콜론 "::")를 사용하는데, 이는 C# 언어의 OO와 같다고 생각하면 쉽습니다. 이해합니다. 하지만 이를 명확히 하기 위해 여전히 살펴보고 싶습니다. PHP의 OO 아이디어는 계속 사용해야 합니다.
-------------------------------------------------- --- ---------------------
정적 클래스 멤버와 메소드를 선언하여 클래스 인스턴스. 정적 멤버 선언은 클래스 개체의 인스턴스를 통해 액세스할 수 없습니다(정적 메서드는 가능함).
정적 선언은 가시성 선언 다음에 와야 합니다. PHP 4와의 호환성을 위해 가시성이 선언되지 않은 경우 멤버 및 메소드는 공개로 선언된 것처럼 처리됩니다.
정적 메서드는 객체가 아닌 인스턴스를 호출할 수 있으므로 의사 변수 $this는 static으로 선언된 메서드에서 사용할 수 없습니다.
실제로 정적 메서드 호출 형식은 컴파일 타임에 결정됩니다. 선언해야 하는 클래스 이름을 사용하는 경우 접근 방식은 전체 식별이며 상속 규칙이 적용되지 않습니다. 이 접근 방식은 선언해야 하는 클래스 이름을 사용할 때 완전히 유효하며 상속 규칙이 없습니다.
self가 선언된 경우 self는 현재 속한 클래스에 의해 해석됩니다. 상속 규칙도 적용되지 않습니다. 정적 속성은 화살표 연산자 ->를 통해 비정적 메서드에서 액세스할 수 없으며, 이는 E_STRICT 수준 경고를 생성합니다.
코드는 다음과 같습니다.
<?php class Foo { public static $my_static='foo'; public function staticValue(){ return self::$my_static; } } class Bar extends Foo { public function fooStatic(){ return parent::$my_static; } } print Foo::$my_static."/n"; $foo = new Foo(); print $foo->staticValue()."/n"; print $foo->my_static."/n";// Undefined "Property" my_static // $foo::my_static is not possible print Bar::$my_static."/n"; $bar = new Bar(); print $bar->fooStatic()."/n"; ?>
코드는 다음과 같습니다.
//静态方法实例(Static method example) <?php class Foo { public static function aStaticMethod() { } } Foo::aStaticMethod(); ?>
각 기본 클래스에 상수를 정의하여 변경되지 않도록 할 수 있습니다. 상수는 $ 기호를 사용하여 선언하거나 사용하지 않는다는 점에서 일반 변수와 다릅니다. 정적 멤버와 마찬가지로 상수 값은 개체 인스턴스를 통해 액세스할 수 없습니다(대신 $object::constant 사용). 상수 값은 변수, 클래스 멤버 또는 수학 표현식이 아닌 상수 expression이어야 합니다. 또는 함수 호출의 결과입니다.
아아아아위 내용은 phpOO 정적 키워드 및 클래스 상수 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!