Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问函数中的类_Php - Fatal编程技术网

Php 访问函数中的类

Php 访问函数中的类,php,Php,以定义的类为例 我想在函数中添加“多一个值”,如下所示: function test_function() { $Testclass->setTestvar("one more value"); } function test_function() { global Testclass; $Testclass->setTestvar("one more value"); } 但它不起作用。我给出了错误消息undefined variable Testcla

以定义的类为例

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

function test_function() {
    $Testclass->setTestvar("one more value");
}
function test_function() {
    global Testclass;
    $Testclass->setTestvar("one more value");
}
但它不起作用。我给出了错误消息undefined variable Testclass。为了使其工作,我必须在函数中将变量定义为全局变量,如下所示:

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

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

一种方法是使用singleton

MyClass::getInstance()->DoSomethingUser()

有时可以使用静态方法


MyClass::doIt()

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

function test_function(Testclass $testclass)
{
    $testclass->setTestvar("one more value");
}
然后用对象调用它:

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

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

请参阅。谢谢Alex,我确实理解私有变量作用域的概念。我不担心在程序的其他地方把另一个变量搞砸,恰恰相反。我想使用已经定义的同一个类。该类是一个日志文件。我创建了一个日志文件,然后在其中添加行。从主程序来看,它工作得很好,但从函数内部,我必须添加全局变量并再次定义变量,这对我来说很奇怪。只是想知道是否有更好的方法。我觉得我的留言解释得很好。谢谢伊万的快速回复!使用singleton似乎是一种很好的方法,但我在使用它时仍然遇到同样的问题。如果你能给我一些完整的代码示例,这将是非常有帮助的!(或者至少还有一些提示)