更改另一个函数中的变量值

时间:2012-11-03 08:12:13

标签: php

我的php代码需要一些帮助。这是我的代码

class myclass extends anotherclass {

    var $bAlert;

    function myclass($var) {
        parent::anotherclass($var);
        $this->bAlert = false;
    }

function alert() {
        $this->bAlert = 'true';
        return;
    }

function display() {
        if(!$this->bAlert) {
           return;
        }
        return 'blah blah';
    }
}

现在我想要的是,我有一个函数在display()被调用时在屏幕上显示这不是问题,但我只希望它在调用alert()后显示。所以这就是我的想法,但它有一个问题。我想在调用alert()后永久地将$ bAlert的值更改为true,当然它不会发生。那么,任何人都有其他明智的想法或任何其他方式来做到这一点?

由于

2 个答案:

答案 0 :(得分:2)

使用单件类

有关单身人士课程的更多信息,请访问here

修改

或者您可以使用静态变量和方法

修改

请参阅此代码:

<?php 
class myclass extends anotherclass {
    static public $bAlert;
    function myclass($var) {
        parent::anotherclass($var);
        self::$bAlert = false;
    }
    static function alert() {
        self::$bAlert = 'true';
        return;
    }
    function display() {
        if(!self::$bAlert) {
        return;
        }
        return 'blah blah';
    }
}

答案 1 :(得分:1)

好的,我会为了清晰起见添加我的实现

注意:为此,您需要在用户登录所需的所有脚本页面中使用session_start();

class MyClass extends AnotherClass
{
  public static
    $bAlert = false;

  // This is the magic you need!
  public function __construct()
  {
    // Check if the session-var exists, then put it into the class
    if ( array_key_exists('bAlert', $_SESSION) ) {
      self::$bAlert = $_SESSION['bAlert'];

    // Set session with the default value of the class
    } else {
      $_SESSION['bAlert'] = self::$bAlert;
    }
  }

  function setAlert($alertValue = true)
  {
    // Used type-juggle in-case of weird input
    self::$bAlert = (bool) $alertValue;

    // Not needed, but looks neat.
    return;                 
  }

  function display($message = 'Lorum ipsum')
  {
    // This part will **only** work when it's a boolean
    if ( !self::$bAlert ) {
      return;
    }

    return $message;
  }
}

顺便说一句,如果你在PHP5 +中使用类,请尝试使用function __construct(){}而不是function MyClassName(){}。我知道它与其他编程语言相比看起来很奇怪,但在PHP5 +中它只是效果更好。

为了更好地理解课程和课程。对象和会话,这个文档可能很有用: