이 글은 주로 PHP에서 정적 클래스와 정적 변수의 사용법에 대한 차이점을 소개합니다. PHP에서 정적 클래스와 정적 변수의 정의, 기능 및 사용법을 예제와 함께 자세히 분석합니다.
이 예제는 PHP에서 정적 클래스와 정적 변수 사용의 차이점을 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
static은 정적 객체 또는 정적 변수를 정의하는 것입니다. static으로 정의된 변수나 클래스 메서드의 특성에 대해서는 이 기사의 관련 예제를 읽어보면 알 수 있습니다.
Create. object$ object = new Class(), 그리고 변수/메서드에 액세스할 수 있는 경우 "->"를 사용하여 $object->attribute/function을 호출합니다. 2. : class::attribute/ 함수, 정적이든 비정적이든 전제조건이 있습니다.
A. 변수인 경우 해당 변수에 액세스할 수 있어야 합니다.
B. 메소드가 접근 가능하다는 것 외에, 메소드도 충족해야 합니다.
① 정적 메소드인 경우 특별한 조건은 없습니다.
② 비정적 메소드인 경우 $를 사용하지 않고 메소드를 변경해야 합니다. 즉, 비정적 변수/메서드가 호출되지 않습니다. 물론 정적 변수/메서드를 호출하는 데에는 문제가 없습니다.
그럼 $object->…를 사용하는 것과 클래스를 사용하는 것의 차이점을 살펴보겠습니다. ::...:
1. $object->...를 사용하려면
constructor를 실행하여 객체를 생성해야 합니다.2. 생성자를 실행하지 않고 class::...를 호출합니다.
3. 클래스::...를 사용하여 생성자를 실행하지 않고 비정적 메서드/변수를 호출하여 객체를 생성합니다.
그러면 이상한 점은 2와 3이 동일하기 때문에 나오는 것입니다. 정적 메소드/변수의 존재 이유는 무엇입니까?
정적: 클래스 멤버 또는 메서드를 정적으로 선언하면 클래스를 인스턴스화하지 않고도 직접 액세스할 수 있습니다. 정적 메서드는 개체를 통해 정적 멤버에 액세스할 수 없습니다. 그러나 클래스의 객체 인스턴스는 모두 공유될 수 있습니다.
예를 들어, 코드는 다음과 같습니다:
<?php Class Person{ // 定义静态成员属性 public static $country = "中国"; // 定义静态 成员方法 public static function myCountry() { // 内部访问静态成员属性 echo "我是".self::$country."人<br />"; } } class Student extends Person { function study() { echo "我是". parent::$country."人<br />"; } } // 输出成员属性值 echo Person::$country."<br />"; // 输出:中国 $p1 = new Person(); //echo $p1->country; // 错误写法 // 访问静态成员方法 Person::myCountry(); // 输出:我是中国人 // 静态方法也可通过对象访问: $p1->myCountry(); // 子类中输出成员属性值 echo Student::$country."<br />"; // 输出:中国 $t1 = new Student(); $t1->study(); // 输出:我是中国人 ?>예제를 실행하면, 출력은 다음과 같습니다:
China
I am Chinese
I am Chinese
China
저는 중국인입니다
요약: 클래스 내의 정적 멤버 속성이나 메서드에 액세스하려면 self::($slef 아님)를 사용하세요. 코드는 다음과 같습니다.
slef:: $country slef:: myCountry()
상위 클래스 정적 멤버 속성이나 하위 클래스의 메서드에 액세스하려면 , parent:: 사용($parent 아님 참고), 코드는 다음과 같습니다.
parent:: $country parent:: myCountry()
정적 멤버에 대한 외부 액세스
속성 및 메서드는 클래스 이름/하위 클래스 이름::, 코드는 다음과 같습니다. Person::$country
Person::myCountry()
Student::$country
하지만 정적 메소드는 일반 객체를 통해서도 접근 가능합니다.
<?PHP function foo(){ static $int = 0;// correct static $int = 1+2; // wrong (as it is an expression) static $int = sqrt(121); // wrong (as it is an expression too) $int++; echo $int; } ?>
<?PHP function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?>자, 매번 Test( ) 함수가 호출되면 $w3sky의 값이 출력되고 1씩 증가됩니다.
정적 변수도 처리를 제공합니다
재귀 함수는 자신을 호출하는 함수입니다. 이 간단한 함수를 사용하여 10까지 재귀적으로 계산해 보겠습니다. 중지할 시기를 결정하려면 $count를 사용하세요. 정적 변수 및 재귀 함수의 코드는 다음과 같습니다. <?PHP
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test();
}
$count--;
}
?>
참고: 위의 예에 따라 정적 변수를 선언할 수 있습니다.
의 결과를 선언에 사용하면 해당 할당으로 인해 구문 분석 오류가 발생합니다.
위 내용은 PHP의 정적 클래스와 정적 변수의 사용예 비교 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!