在PHP类的函数之间共享变量

时间:2012-11-02 16:36:33

标签: php

我的代码遵循以下结构:

class someClass
{
    private static $pay = 0;

    //something like this...
    public static function run()
    {
        if ($_SESSION['title']== "whatever" and $_SESSION['rank'] == "1")
        {
            self::$pay = 50000;
        }
    }

    public static function benefits()
    {
        self::$pay = 50000 * 1.30;
        benefits = self:$pay;
        echo benefits;
    }
}

然后我尝试拨打这样的好处......

someClass::benefits();

但它始终设为零。当满足if语句中的条件时,它永远不会改变。

我在这里做的事情显然是错的吗?我没有收到任何错误。

感谢您的帮助。

6 个答案:

答案 0 :(得分:1)

我真的不认为你想要来自该类功能的echo值。我强烈推荐return。然后,如果你立刻回应它们,那很好,但是你不应该像函数那样回应。没有看到如何使用它,这将是我的第一个猜测。

答案 1 :(得分:1)

在福利函数中,如果您打算将其用作局部变量,那么益处应该是$ good。

答案 2 :(得分:1)

请尝试以下代码:

<?php
class someClass
{
    private static $pay = 0;

    //something like this...
    public static function run()
    {
        if ($_SESSION['title']== "whatever" and $_SESSION['rank'] == "1")
        {
            self::$pay = 50000;
        }
    }

    public static function benefits()
    {
        self::$pay = 50000 * 1.30;
        $benefits = self::$pay;
        return $benefits;
    }
}

echo someClass::benefits();
?>

答案 3 :(得分:0)

你正在使用benefits,好像它是常量的(在php中不允许分配) - 你可能意味着$benefits。将您的代码更改为:

    self::$pay = 50000 * 1.30;
    $benefits = self::$pay;
    echo $benefits;

答案 4 :(得分:0)

public static function benefits()
{
    self::$pay = 50000 * 1.30;
    echo self::$pay;
}

应该是你要找的东西

答案 5 :(得分:0)

你必须改变

 benefits = self:$pay;

 benefits = self::$pay;