문제

PHP가 다른 언어에서 정적과 같은 기능을하는 클래스의 변수 유형이 있는지 궁금합니다. 그리고 나는 같은 클래스의 모든 객체가 동일한 변수를 사용한다는 것을 의미하며, 하나에서 업데이트되면 모든 객체가 업데이트됩니다. 정적은 모든 객체에서 공유되기 때문에 가깝지만 업데이트 할 수 있어야합니다. 이것에 대해 글로벌을 사용해야합니까?

도움이 되었습니까?

해결책

나는 정적이 당신이 원하는 것이라고 생각합니다. 정적 변수를 업데이트 할 수 있습니다. "정적 컨텍스트"(예 : :: 연산자를 사용하여 수행하면됩니다.

class Class1 {
    protected static $_count = 0;

    public function incrementCount() {
        return self::$_count++;
    }
}

$instance1 = new Class1();
$instance2 = new Class1();
var_dump($instance1->incrementCount(), $instance2->incrementCount());

출력 :

int 0

int 1

다른 팁

정답은 PHP에 최종적으로 동등한 것이 없지만 공전 어쨌든 처음에 원하는 것 같습니다.

공전 특정 인스턴스와 관련이 없기 때문에 클래스의 모든 인스턴스에서 동일한 값을 갖는 속성이 있습니다.

사용해야합니다 :: 운영자가 액세스 할 수 있습니다. 정적이기 때문에 사용할 수 없습니다. ->.

~할 수 있다 정적 속성 업데이트 :

class A {
   protected static $_foo = 0;

   public function increment()
   {
       self::$_foo++;
   }   

   public function getFoo()
   {
       return self::$_foo;
   }
}


$instanceOne = new A();
$instanceTwo = new A();


$instanceOne->getFoo(); // returns 0

$instanceTwo->increment();

$instanceOne->getFoo(); // returns 1

PHP 파일에서 이름이 이름이 상수에서 변수를 만들 수 있습니다.

---constants.php-- $ database_name = "mysql"

파일에 파일을 포함시킵니다. 가치를 변경할 수 있습니다. 상수가 바뀌는 것이 아니기 때문에 상수라고 부르지는 않지만 상수라고 부르지는 않습니다.

제 생각에는 static ~이다 당신이 찾고있는 키워드.

그리고 a를 막는 것은 없습니다 static PHP에서 "업데이트 된"꿀벌의 속성 : 처음 설정 한 시점에 초기화되며 PHP 스크립트를 실행하는 동안 값을 유지하지만 확실히 새 값으로 설정할 수 있습니다.

변수 정적으로 만드는 것이 당신이 설명한 것에 대해 작동하지 않는 이유를 모르지만 (키워드 최종 결승과 관련이 없습니다)?

<?php

class Bla
{
    public static $var;

    public function __construct()
    {
        Bla::$var = Bla::$var + 1;
    }
}

$test = new Bla();
echo Bla::$var; // 1
$test = new Bla();
echo Bla::$var; // 2

?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top