duanhuau567787 2017-09-09 07:16
浏览 87
已采纳

一个用户请求期间php中的静态变量

I try to use a variable in each instance for a class.

My example class:

class test {
    private static $gvalue;

    function setValue($value)
    {
        $this->gvalue = $value;
    }

    function getValue()
    {
        return $this->gvalue;
    }

}

Now I create to instances of this class "test" and print out some values.

$obj = new test();
$obj2 = new test();
echo "1: ";
echo $obj->getValue();
echo " / ";
echo $obj2->getValue();
$obj->setValue("green");
echo "<BR>2: ";
echo $obj->getValue();
echo "/";
echo $obj2->getValue();

My expectation was to get the following output:

1: / 2: green/green

But the result is:

1: / 2: green/

Did I understand something wrong? Or ist that not possible in PHP? Goal at the end. I would like to set some variables/arrays during the creation of an instance (__construc) and us that for every instance during the code (per user request).

  • 写回答

2条回答 默认 最新

  • dsovc00684 2017-09-09 07:25
    关注

    You have to change how you access the static property in your method implementation:

    <?php
    
    class Test {
      private static $gvalue;
    
      function setValue($value) {
        self::$gvalue = $value;
      }
    
      function getValue() {
        return self::$gvalue;
      }
    }
    
    $obj1 = new Test();
    $obj2 = new Test();
    echo sprintf("1: %s/%s
    ", $obj1->getValue(), $obj2->getValue());
    
    $obj1->setValue("green");
    echo sprintf("2: %s/%s
    ", $obj1->getValue(), $obj2->getValue());
    

    The output of that is:

    1: /
    2: green/green
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入