Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 정적 속성 및 메서드

<시간/>

소개

PHP 클래스에서 static 키워드로 선언된 속성과 메서드는 -> 연산자를 사용하여 해당 객체에서 액세스할 수 없습니다. 사실, object는 클래스의 어떤 인스턴스에도 접근할 필요가 없습니다. 클래스에서 정적 항목의 기본 가시성은 공개입니다.

정적 속성

외부 클래스에서 정적 속성에 액세스하려면 클래스 이름과 함께 범위 확인 연산자(::)를 사용해야 합니다. 클래스 이름으로 평가되는 문자열 변수는 정적 속성에 제공할 수도 있습니다.

<?php
class testclass{
   static $name="test";
}
echo testclass::$name;
$var="testclass";
echo $var::$name;
?>

동일한 클래스의 메서드 내에서 정적 속성을 사용하려면 self를 사용하세요. 인스턴스 속성에 액세스하는 데 사용되는 -> 연산자 대신 키워드입니다.

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
$obj=new testclass();
$obj->test();
?>

부모 클래스에 선언된 모든 정적 속성은 parent를 사용하여 자식 클래스 메서드 내에서 참조할 수 있습니다. 범위 확인 연산자와 함께 키워드

<?php
class testclass{
   static $name="test";
   public function test(){
      echo self::$name;
   }
}
class myclass extends testclass{
   public function mytest(){
      echo parent::$name;
   }
}
$obj=new myclass();
$obj->mytest();
?>

정적 메서드

메서드가 정적으로 선언되면 의사 변수 $this 사용할 수 없습니다. 따라서 클래스의 인스턴스 속성에 액세스할 수 없습니다. 정적 메서드는 범위 확인 연산자와 함께 클래스 이름으로 호출됩니다.

다음 예제에서 클래스에는 생성자가 실행될 때마다(즉, 각 개체에 대해) 증가하는 정적 속성 $count가 있습니다. 클래스 내부에는 정적 속성의 값을 가져오는 정적 함수가 있습니다.

예시

<?php
class testclass{
   static $count=0;
   function __construct(){
      self::$count++;
   }
   static function showcount(){
      echo "count = " . self::$count;
   }
}
$a=new testclass();
$b=new testclass();
$c=new testclass();
testclass::showcount();
?>

출력

이것은 다음과 같은 출력을 생성합니다 -

count = 3