7

PHP には、他の言語で static のように機能するクラスの変数の型があるかどうか疑問に思っています。つまり、同じクラスのすべてのオブジェクトが同じ変数を使用し、1 つのオブジェクトで更新されると、すべてのオブジェクトで更新されるということです。静的はすべてのオブジェクトで共有されるため近いですが、更新できるようにする必要があります。これにはグローバルを使用する必要がありますか?

4

6 に答える 6

6

正しい答えは、PHP には final に相当するものはありませんが、とにかく最初に必要だったのはstaticのようです。

staticには、特定のインスタンスに関連付けられていないため、クラスのすべてのインスタンスで同じ値を持つというプロパティがあります。

::演算子を使用してアクセスする必要があります。静的であるため、 ->を使用できないためです。

于 2009-07-29T06:49:10.543 に答える
4

私は静的があなたが望むものだと思います。静的変数を更新できます。「静的コンテキスト」で行う必要があります (つまり、:: 演算子を使用します。

class Class1 {
    protected static $_count = 0;

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

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

出力します:

整数 0

整数 1

于 2009-07-29T06:00:05.603 に答える
1

静的プロパティを更新できます:

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
于 2009-07-29T05:59:06.040 に答える
0

定数という名前の PHP ファイルに変数を作成するだけです。

--Constants.php-- $DATABASE_NAME = "mysql"

ファイルにファイルを含めます。その値を変更できます。それはあなたが望むものに近づきますが、定数は変更されることを意図していないため、それらを定数と呼ぶのは良くありません。それが私を混乱させたものです:)。

于 2009-07-29T05:51:55.430 に答える
0

変数を静的にすることが、あなたが説明したものに対して機能しない理由がわかりません(ただし、キーワード final とは関係ありません)。

<?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

?>
于 2009-07-29T05:58:28.477 に答える
0

探しているキーワードと思います。static

PHP では、プロパティが「更新」されるのを妨げるものは何もありませんstatic。最初に設定されたときに初期化され、PHP スクリプトの実行中に値が保持されますが、新しい値に設定することは間違いありません。

于 2009-07-29T06:04:26.903 に答える