>  기사  >  백엔드 개발  >  PHP 클래스 상수, 정적 속성, 비정적 속성 간의 차이점에 대한 자세한 설명

PHP 클래스 상수, 정적 속성, 비정적 속성 간의 차이점에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-29 09:27:171283검색

1. 클래스 상수: 클래스에서 항상 변경되지 않는 값은 상수

로 정의됩니다. 클래스의 상수는 공개되어 상속될 수 있으며 재정의될 수 있습니다. 클래스의 상수에 액세스하려면 이중 콜론::을 사용해야 합니다. 클래스 이름이나 클래스의 인스턴스를 사용하여 액세스할 수 있습니다. 상수이므로 이름에 $ 변수를 나타내는 기호를 사용할 수 없습니다. .

클래스에서 항상 변경되지 않는 값을 상수로 정의할 수 있습니다. 상수를 정의하고 사용할 때 $ 기호를 사용할 필요가 없습니다.

상수 값은 고정된 값이어야 하며 변수, 클래스 속성, 수학 연산 또는 함수 호출의 결과일 수 없습니다.

인터페이스에서도 상수를 정의할 수 있습니다. 더 많은 예제를 보려면 설명서의 인터페이스 섹션을 참조하세요.

PHP 5.3.0부터 변수를 사용하여 클래스를 동적으로 호출할 수 있습니다. 하지만 이 변수의 값은 키워드(예: self, parent 또는 static)일 수 없습니다.

구문: ​​const 상수= 'constant';

class Myclass{
 const constant = '常量';

 //类内部调用
 public function test(){
  echo self::constant.&#39;<br>&#39;;
 } 
}
Myclass::test();
//类外部访问
echo Myclass::constant.&#39;<br>&#39;; //方法一

$obj = new Myclass();  //方法二
echo $obj::constant.&#39;<br>&#39;;

II.Static속성: 상수 구문인::을 사용하여 접근할 수 있는 변수이며, 인스턴스화 없이 접근할 수 있습니다

구문 : public static $my_static = '유사 상수';

class Myclass{
 public static $static_val = &#39;静态属性&#39;;
 //类内部访问
 public function test(){
  return self::$static_val.&#39;<br>&#39;;
 } 
}

//类外部访问
// echo Myclass::test();
echo Myclass::$static_val;  //方法一
$obj = new Myclass();    //方法二
echo $obj::$static_val;
echo $obj->test();

3. 비정적 속성: -> 기호를 사용하여 인스턴스화 후에 액세스할 수 있는 일반 변수

구문: ​​public $my_val = 'normal Variable'

class Myclass{
 public $normal_val = &#39;非静态属性&#39;;

 //类内部访问
 public function test(){
  return $this->normal_val ;
 } 
}
//类外部访问
$obj = new Myclass(); 
echo $obj->normal_val;
echo $obj->test();

클래스의 상수, 속성 및 메서드 목록을 가져오는 PHP 메서드

$r = new ReflectionClass($this); 
Zend_Debug::dump($r->getConstants(), "Constants"); 
Zend_Debug::dump($r->getProperties(), "Properties"); 
Zend_Debug::dump($r->getMethods(), "Methods");

위 내용은 PHP 클래스 상수, 정적 속성, 비정적 속성 간의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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