由于我是php oop的新手,我有一个问题如何在静态类中使用全局变量而不使用构造函数?或者我必须在这种情况下使用构造函数吗?
$varGlob = 'hello mars';
class statclass {
global $varglob;
protected static $newVar = $varglob;// not going to work
static public function outputfunc(){
return statClass::$newVar;
}
}
答案 0 :(得分:0)
正如Gordon
提到的那样,你不应该使用globals
或我建议的东西,因为这会打破你的OOP设计。你实际上应该通过constructor
传递价值[这就是为什么它们的意思]
但是,下面的代码通过使用define
之类的命名常量来解决您的目的,遗憾的是这是一种丑陋的方式......
<?php
define("varGlob","hello");
class statclass
{
protected static $newVar = varGlob;
static public function outputfunc(){
return statClass::$newVar;
}
}
echo statclass::outputfunc(); //"prints" hello
<?php
class settings
{
# Populate all your variables that are to be used.
protected $var1='Variable1';
protected $var2='Variable2';
}
class yourclass extends settings
{
# All those variables used in the class `settings` can be accessed here.
public function disp()
{
echo $this->var1;
}
}
$yc = new yourclass;
$yc->disp(); //"prints" Variable1
答案 1 :(得分:0)
您不在PHP类中使用全局变量,而是使用静态变量。虽然这看起来令人困惑,但全局并不是用于面向对象的PHP,而是用于“普通”PHP,旧式。
有关详细信息,请参阅:http://nl3.php.net/manual/en/language.oop5.static.php。