Here是我的代码:
class myclass{
public function one(){
return 'sth';
}
public function two(){
function myfunc($arg){
if ($arg){
return $this->one();
} else {
return 'nothing';
}
myfunc(true);
}
}
}
$obj = new myclass;
echo $obj->$this->two();
正如你在小提琴中看到的那样,它会抛出这个错误:
致命错误:未捕获错误:当不在/ in / E1U9n中的对象上下文中时使用$ this:25
我该如何解决这个问题?预期结果为sth
。
答案 0 :(得分:3)
class myclass{
public function one(){
return 'sth';
}
public function two(){
function myfunc($arg){
if ($arg){
$newobj = new myclass();
return $newobj->one();
} else {
return 'nothing';
}
}
return myfunc(TRUE);
}
}
$obj = new myclass;
echo $obj->two();
答案 1 :(得分:1)
你的代码非常混乱,因为你缺乏基本的知识和经验。我严格建议您阅读PHP中有关OOP的基础知识。 http://php.net/manual/en/language.oop5.php
<?php
class myclass {
public function one()
{
return 'sth';
}
public function two()
{
return $this->myfunc(true);
}
protected function myfunc($arg)
{
if ($arg)
return $this->one();
else
return 'nothing';
}
}
$obj = new myclass;
echo $obj->two();