Php 在Z行Y中的非对象上调用成员函数X
为什么它不回显“test”?这是因为您的函数Php 在Z行Y中的非对象上调用成员函数X,php,Php,为什么它不回显“test”?这是因为您的函数test()与类名相同-它看起来像一个旧式构造函数,所以它是在您执行new test()时运行的,即在设置conversor之前 重命名函数或添加新样式的构造函数进行测试:\u construct()这是因为您的函数Test()与类名相同-它看起来像旧样式的构造函数,因此在执行new Test()时,即在设置conversor之前,它正在运行 重命名函数或添加新样式的构造函数以进行测试:\uu construct(),因为调用$word=$this->
test()
与类名相同-它看起来像一个旧式构造函数,所以它是在您执行new test()
时运行的,即在设置conversor
之前
重命名函数或添加新样式的构造函数进行测试:
\u construct()
这是因为您的函数Test()
与类名相同-它看起来像旧样式的构造函数,因此在执行new Test()
时,即在设置conversor
之前,它正在运行
重命名函数或添加新样式的构造函数以进行测试:
\uu construct()
,因为调用$word=$this->conversor->toLowerFirst($word)
返回错误,此时函数toLowerFirst
不存在(通过Conversor的不存在实例调用该函数)
替换$word=$this->conversor->toLowerFirst($word)代码>与$word=Conversor::toLowerFirst($word)代码>和它将工作
编辑:_构造是一个更好的解决方案,因为我的建议会产生2倍的回音。。(测试被视为测试的构造函数)因为调用$word=$this->conversor->toLowerFirst($word)
返回错误,此时函数toLowerFirst
不存在(通过Conversor的不存在实例调用该函数)
替换$word=$this->conversor->toLowerFirst($word)代码>与$word=Conversor::toLowerFirst($word)代码>和它将工作
编辑:_构造是一个更好的解决方案,因为我的建议会产生2倍的回音。。(测试被视为测试的构造函数)我认为从函数中的t和类中的t开始可以区分它们。我认为从函数中的t和类中的t开始可以区分它们。@Derium tremens,这就是原因!回答得很好,米斯蒂加斯。也就是说,您可能应该重新考虑程序流,因为这可能会引发严格的标准警告;在对应于$Test->conversor=new conversor()的部件之前运行;跑。@震颤性谵妄,这就是原因!回答得很好,米斯蒂加斯。也就是说,您可能应该重新考虑程序流,因为这可能会引发严格的标准警告;在对应于$Test->conversor=new conversor()的部件之前运行;跑。
<?php
class Conversor {
function toLowerFirst($word) {
$word = 'test';
return $word;
}
}
class Test {
function test() {
$word = 'Test';
$word = $this->conversor->toLowerFirst($word);
echo $word;
}
}
class Launcher {
function launch() {
$Test = new Test();
$Test->conversor = new Conversor();
$Test->test();
}
}
$launcher = new Launcher();
$launcher->launch();
?>