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

在PHP类的函数之间共享变量,php,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;

我的代码遵循以下结构:

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语句中的条件时,它不会更改

我在这里做的事情有没有明显的错误?我没有得到任何错误


感谢您的帮助。

您使用的是
收益
就好像它是常量一样(php中不允许对其赋值)——您的意思可能是
$benefits
。将代码更改为:

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

您使用的是
benefits
,就好像它是常量一样(php中不允许对其赋值)——您可能指的是
$benefits
。将代码更改为:

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

我真的不认为您希望
从该类函数中回显
值。我强烈推荐
return
ing then。然后如果你立即回显它们,很好,但你不应该像函数那样回显。如果不了解这是如何使用的,那将是我的第一个猜测。

我真的不认为您希望
从该类函数中回送
值。我强烈推荐
return
ing then。然后如果你立即回显它们,很好,但你不应该像函数那样回显。如果不知道这是如何使用的,那将是我的第一个猜测。

在福利函数中,如果您打算将其用作局部变量,福利应为$benefits。

在福利函数中,如果您打算将其用作局部变量,福利应为$benefits

public static function benefits()
{
    self::$pay = 50000 * 1.30;
    echo self::$pay;
}
应该是你要找的

应该是你想要的

你必须改变

 benefits = self:$pay;

你必须改变

 benefits = self:$pay;

请尝试以下代码:

<?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();
?>

尝试以下代码:

<?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();
?>


$benefits=self::$pay带有2个冒号@我知道这是个例外,但它仍然是错的。如果这个答案被认为是正确的,那么这些错误应该被删除。另外,如果之前执行过
run
,也没有关系,因为在第一行中,他用一个常量表达式覆盖了
$pay
。@clentfort True。我不认为OP确切知道他们在做什么,因为很多代码都没有意义。他说,“当满足if语句中的条件时,它不会改变。”这意味着
if
应该是计算中的一个相关因素。我不知道如何理解代码了。
$benefits=self::$pay带有2个冒号@我知道这是个例外,但它仍然是错的。如果这个答案被认为是正确的,那么这些错误应该被删除。另外,如果之前执行过
run
,也没有关系,因为在第一行中,他用一个常量表达式覆盖了
$pay
。@clentfort True。我不认为OP确切知道他们在做什么,因为很多代码都没有意义。他说,“当满足if语句中的条件时,它不会改变。”这意味着
if
应该是计算中的一个相关因素。我不知道如何理解代码了。你确定这行:
benefits=self:$pay?这应该会产生致命错误,如果不是打字错误,就不会产生任何错误。最好是您向我们提供真实的代码,而不是有点类似但充满其他错误的代码。您确定这一行:
benefits=self:$pay?这应该会产生致命错误,如果不是打字错误,就不可能产生任何错误。如果您向我们提供真实的代码,而不是有点类似但充满其他错误的代码,那将是最好的。