>백엔드 개발 >PHP 문제 >PHP의 정적 속성과 정적 메서드란 무엇입니까?

PHP의 정적 속성과 정적 메서드란 무엇입니까?

青灯夜游
青灯夜游원래의
2022-01-07 18:38:483245검색

PHP에서는 static 키워드로 수정된 멤버 속성과 멤버 메서드를 정적 속성과 정적 메서드라고 합니다. 정적 속성과 정적 메서드에 액세스하는 구문은 "클래스 이름::$static 속성" 및 "클래스 이름::static"입니다. 방법()".

PHP의 정적 속성과 정적 메서드란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에서는 static 키워드로 수정된 멤버 속성과 멤버 메서드를 정적 속성과 정적 메서드라고 합니다. 여기서는 클래스의 정적 멤버는 클래스의 일반 멤버와 다릅니다. 정적 멤버는 개체로 인스턴스화되지 않습니다. 즉, 클래스를 통해 정적 멤버에 액세스하기 위해 클래스를 인스턴스화할 필요가 없습니다. .

클래스에서 정적 변수를 선언하는 것은 쉽습니다. 클래스의 일반 멤버 앞에 정적 키워드를 추가하여 이 일반 멤버를 정적 멤버로 바꿀 수 있습니다. 이런 방식으로 클래스를 인스턴스화하지 않고도 클래스의 정적 멤버에 직접 액세스할 수 있습니다. 정적 멤버에 액세스하기 위한 구문 형식은 다음과 같습니다.

类名::$静态属性
类名::静态方法()

:: 기호는 범위 확인 연산자라고 하며 정적 멤버, 정적 메서드 및 상수에 액세스하는 데 사용되며 사용할 수도 있습니다. 클래스 및 메서드의 멤버를 재정의합니다. ::符号被称为范围解析操作符,用于访问静态成员、静态方法和常量,还可以用于覆盖类中的成员和方法。

如果要在类内部的成员方法中访问静态属性,只要在静态属性的名称前加上操作符self::即可。

下面通过一个简单的示例演示一下静态成员的定义:

<?php
header("Content-type:text/html;charset=utf-8");
class Website {
	static public $name = &#39;PHP中文网<br>&#39;;
	public $title = &#39;PHP教程&#39;;
	public static function url() {
		echo self::$name;
		echo &#39;https://www.php.cn/<br>&#39;;
		echo $this -> title;
	}

}

Website::url();
?>

运行结果如下:

PHP의 정적 속성과 정적 메서드란 무엇입니까?

注意:在静态方法中,只能调用静态变量,不能调用普通变量;而普通方法则可以调用静态变量。

使用静态成员,除了可以不需要实例化对象外,另一个作用就是在对象被销毁后,仍然保存被修改的静态数据,以便下次继续使用,这一点和我们前面介绍的静态变量相似。

【示例】声明一个静态变量 $num,然后声明一个方法,在方法的内部调用静态变量并给变量的值加 1;然后,实例化类中的对象,最后,调用类中的方法。

<?php
header("Content-type:text/html;charset=utf-8");
class Website {
	static public $num = 0;
	public function add() {
		echo &#39;$num 的值为:&#39; . self::$num;
		self::$num++;
	}

}

$num1 = new Website();
$num1 -> add();
echo &#39;<br>&#39;;
$num2 = new Website();
$num2 -> add();
?>

运行结果如下:

PHP의 정적 속성과 정적 메서드란 무엇입니까?

静态成员不用实例化对象,当类第一次被加载时就已经分配了内存空间,所以直接调用静态成员的速度要更快一些。但如果静态成员声明得过多,空间一直被占用,反而影响系统的运行速度。

说明:

  • 子类可以重写父类的静态方法.

  • 方法内访问静态变量需要用::符号. 不能用$this;

  • 静态方法和静态变量都会被子类继承.

  • 静态变量不能由->访问, 而是由 ::

    클래스 내부 멤버 메서드의 정적 속성에 액세스하려면 정적 속성 이름 앞에 self:: 연산자를 추가하면 됩니다.
  • 다음은 간단한 예를 통해 정적 멤버의 정의를 보여줍니다.

    rrreee

    실행 결과는 다음과 같습니다.
PHP의 정적 속성과 정적 메서드란 무엇입니까?

참고: 정적 메서드에서는 일반 변수가 아닌 정적 변수만 호출할 수 있습니다. 일반 메서드에서는 정적 변수를 호출할 수 있습니다.

정적 멤버를 사용하면 개체를 인스턴스화할 필요가 없는 것 외에도 개체가 삭제된 후에도 수정된 정적 데이터를 저장하여 다음에 사용할 수 있도록 하는 기능이 있습니다. 이는 우리가 소개한 정적 변수와 유사합니다. 더 일찍. 🎜🎜【예제】 정적 변수 $num을 선언한 다음 메서드를 선언하고 메서드 내부에서 정적 변수를 호출한 다음 변수 값에 1을 더한 다음 클래스에서 개체를 인스턴스화하고 마지막으로 메서드를 호출합니다. 수업. 🎜rrreee🎜실행 결과는 다음과 같습니다. 🎜🎜PHP의 정적 속성과 정적 메서드란 무엇입니까?🎜🎜정적 멤버는 객체를 인스턴스화할 필요가 없습니다. 클래스가 처음 로드될 때 메모리 공간이 할당되므로 정적 멤버를 직접 호출하는 것이 더 빠릅니다. 그러나 너무 많은 정적 멤버를 선언하면 공간을 항상 차지하게 되어 시스템 실행 속도에 영향을 미치게 됩니다. 🎜🎜설명: 🎜
    🎜🎜하위 클래스는 반복될 수 있습니다. 상위 클래스의 정적 메서드를 작성합니다. 🎜🎜🎜🎜메서드 내의 정적 변수에 액세스하려면 :: 기호를 사용해야 합니다. 🎜🎜🎜🎜정적 메서드와 정적 변수는 하위 클래스에서 상속됩니다. 🎜🎜🎜🎜정적 변수는 로 사용할 수 없습니다. ->에 액세스하지만 ::(이중 콜론)로 액세스합니다. 🎜🎜🎜🎜객체가 직접 호출할 수 있습니다. 개체 이름을 통한 정적 멤버 메서드->, 이것은 일반 메서드 호출과 동일합니다.🎜🎜🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜

위 내용은 PHP의 정적 속성과 정적 메서드란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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