我的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,当然它不会发生。那么,任何人都有其他明智的想法或任何其他方式来做到这一点?
由于
答案 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 +中它只是效果更好。
为了更好地理解课程和课程。对象和会话,这个文档可能很有用: