在静态php类中使用全局变量

时间:2014-03-04 12:39:13

标签: php global static-classes

由于我是php oop的新手,我有一个问题如何在静态类中使用全局变量而不使用构造函数?或者我必须在这种情况下使用构造函数吗?

$varGlob = 'hello mars';

class statclass {

    global $varglob;

    protected static $newVar = $varglob;// not going to work

    static public function outputfunc(){
       return statClass::$newVar;
    }
}

2 个答案:

答案 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