php - 有没有办法设置一个类变量以应用于 php 中该类的所有实例?

标签 php oop

我可能问得不好,所以我举个例子。我有一个与此类似的类(class):

class myclass {
   var $template = array();
   var $record = array();

function __construct($template,$record) {
   $this->template = ( set = to a database response here );
   $this->record   = ( set = to a database response here );
}

我的问题是,当使用这个对象时,模板应该始终是相同的,并且记录是对象的每个实例的变化。有没有办法将 $template 的值转移到每个新实例?类似的东西

$a = new myclass(1,500);
$b = new myClass(2);

其中 b 具有创建 $a 时已生成的 $this->template 值。也许我完全是从错误的角度来看待这个问题的。任何建议表示赞赏。

最佳答案

是的。 Declaring it static将使它成为一个类属性

class Counter {
    public static $total = 0;
    public function increment()
    {
         self::$total++;
    }
}
echo Counter::$total; // 0;
$a = new Counter;
$a->increment();
echo $a::$total; // 1;
$b = new Counter;
echo $b::$total; // 1;

注意:我使用 $a 和 $b 来访问静态属性,以说明该属性同时适用于两个实例。此外,这样做仅适用于 5.3 及以上版本。在此之前,您必须执行 Counter::$total。

关于php - 有没有办法设置一个类变量以应用于 php 中该类的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379832/

相关文章:

php - mysqldump 停止新的 apache 升级

php - AJAX 加载 div 中的 AJAX 电子邮件表单验证?

php - 使用查询字符串中的变量获取数据?

perl - 正确的 Perl OO 继承

algorithm - 处理大量的微依赖

通过 FTP 上传 PHP - ftp_put() 我不会打开到 x.x.x.x 的连接(仅到 y.y.y.y)

php - 在主机 000webhost.com 上时出现 ' 字符的 mysql 错误

c++ - 渲染对象的所有实例维护对共享纹理/资源的指针/引用的最佳方法

javascript - OO Javascript 继承向下两级

C++:什么时候适合在类外定义函数