访问函数中的类

时间:2017-06-09 18:29:48

标签: php

使用定义here

的类作为示例
class Testclass {
    private $testvar = "default value";
    public function setTestvar($testvar) { 
        $this->testvar = $testvar; 
    }
    public function getTestvar() { 
        return $this->testvar; 
    }
    function dosomething()
    {
        echo $this->getTestvar();
    }
}

$Testclass = new Testclass();
$Testclass->setTestvar("another value");
$Testclass->dosomething();

我想在函数中添加“一个更多的值”,如下所示:

function test_function() {
    $Testclass->setTestvar("one more value");
}

但它不起作用。我给出了错误消息undefined变量Testclass。为了使它工作,我必须在函数中将变量定义为全局变量,如下所示:

function test_function() {
    global Testclass;
    $Testclass->setTestvar("one more value");
}

我对PHP很陌生,但这种使用它的方式对我来说似乎很奇怪。从已经定义的主要PHP文件,但是当我从函数中使用它时,我必须再次定义。基本上我要做的是创建一个创建新文件的类,并从不同的函数添加字符串。有没有更好的方法?有什么建议?提前谢谢了。

2 个答案:

答案 0 :(得分:0)

一种方法是使用单身

MyClass的::的getInstance() - > doSomethingUsefull();

有时您可以使用静态方法

MyClass的:: doIt方法();

答案 1 :(得分:0)

函数有自己的私有变量范围。所以(例如)你可以在一个函数中使用$i,而不用担心它会在程序的其他地方搞砸另一个$i。如果要让函数对已存在的对象执行操作,只需将对象作为参数传递给函数:

function test_function(Testclass $testclass)
{
    $testclass->setTestvar("one more value");
}

然后用你的对象调用它:

$Testclass = new Testclass();
test_function($Testclass);

注意:如果您在类外定义的函数与类紧密相关,那么您可能希望将它们定义为类中的方法而不是单独的独立函数。