"::" 연산자는 PHP 클래스 코드에서 자주 볼 수 있습니다. 이는 범위 제한 연산자로, 클래스 내 다양한 범위의 수준을 설정하는 데 사용됩니다. 왼쪽은 범위이고 오른쪽은 액세스 범위의 멤버입니다.
php에는 self와 parent라는 두 가지 범위가 정의되어 있습니다(정적 범위는 php6에서 제공됩니다).
self: 현재 클래스의 범위를 나타냅니다. 이와 달리 클래스의 특정 인스턴스를 나타내지 않습니다. Self는 클래스 외부의 코드에서 사용할 수 없으며 상속 계층에서 자신을 식별할 수 없습니다. 위치. 즉, 확장 클래스에서 self를 사용하면 상위 클래스의 메서드를 호출하지 않고 확장 클래스의 오버로드된 메서드를 호출합니다.
parent : 현재 클래스의 부모 클래스의 범위를 나타내며, 나머지는 self 속성과 동일하다.
PHP 이중 콜론 :: 연산자 예:
<?php class forasp{ static $url="http://blog.csdn.net/abandonship"; static $webname = "PHP学习之双冒号的用法"; public function writeurl(){ echo self::$url;//调用自己的内容 } public function writewebname(){ echo "测试子类调用父类内容"; } } class cn extends forasp{ function father(){ parent::wirtewebname(); } } $a = new forasp();//实例化父类 $a->writeurl();//调用自身内容 $b = new cn(); $b->writewebname();//调用父类内容 ?>
::를 사용하여 클래스의 정적 메서드나 속성을 호출할 수도 있습니다. 이는 리소스 사용량을 줄일 수 있기 때문입니다. 클래스 인스턴스는 일부 리소스를 차지합니다.
static:: 범위는 php6에서 제안되었으므로 더 이상 self:: 및 parent::가 필요하지 않습니다. 함수를 구현하는 최종 클래스를 가리키려면 static::을 사용합니다. 이 한정자는 코드가 실행되기 직전에 상속 계층의 마지막 클래스 멤버를 계산합니다.
"범위 확인 연산자"라고도 알려진 "이중 콜론 연산자"는 클래스의 정적, 상수 및 재정의된 속성과 메서드에 액세스할 수 있습니다.
클래스 정의 외부에서 사용하는 경우 클래스 이름을 사용하여 호출하세요. PHP 5.3.0에서는 클래스 이름 대신 변수를 사용할 수 있습니다.
프로그램 목록: 클래스 정의 외부에 액세스하려면 변수를 사용하세요
<?php class Fruit { const CONST_VALUE = 'Fruit Color'; } $classname = 'Fruit'; echo $classname::CONST_VALUE; // As of PHP 5.3.0 echo Fruit::CONST_VALUE; ?>
프로그램 목록: 클래스 정의 외부에서 이중 콜론(::) 사용
<?php class Fruit { const CONST_VALUE = 'Fruit Color'; } class Apple extends Fruit { public static $color = 'Red'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; echo self::$color . "\n"; } } Apple::doubleColon(); ?>
프로그램 실행 결과:
과일색 빨간색
프로그램 목록: 상위 메소드 호출
Php 코드
<?php class Fruit { protected function showColor() { echo "Fruit::showColor()\n"; } } class Apple extends Fruit { // Override parent's definition public function showColor() { // But still call the parent function parent::showColor(); echo "Apple::showColor()\n"; } } $apple = new Apple(); $apple->showColor(); ?>
프로그램 실행 결과:
Fruit::showColor()
Apple::showColor()
프로그램 목록: 범위 한정자 사용
Php 코드
<?php class Apple { public function showColor() { return $this->color; } } class Banana { public $color; public function __construct() { $this->color = "Banana is yellow"; } public function GetColor() { return Apple::showColor(); } } $banana = new Banana; echo $banana->GetColor(); ?>
프로그램 실행 결과:
바나나는 노란색이다
프로그램 목록: 기본 클래스 호출 방법
Php 코드
<?php class Fruit { static function color() { return "color"; } static function showColor() { echo "show " . self::color(); } } class Apple extends Fruit { static function color() { return "red"; } } Apple::showColor(); // output is "show color"! ?>
프로그램 실행 결과:
색상 표시