0

我需要一些关于我的 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,当然它不会发生。那么,任何人有任何其他聪明的想法或任何其他方式来做到这一点?

谢谢

4

2 回答 2

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';
    }
}
于 2012-11-03T08:22:34.153 回答
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+ 中它工作得更好。

为了更好地理解类和对象以及会话,此文档可能有用:

于 2012-11-03T09:05:58.853 回答