Php 如何将一个方法调用为另一个方法的函数?
这是我的代码:Php 如何将一个方法调用为另一个方法的函数?,php,function,methods,Php,Function,Methods,这是我的代码: class myclass{ public function one(){ return 'sth'; } public function two(){ function myfunc($arg){ if ($arg){ return $this->one(); } else { return 'noth
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:25中的对象上下文中时使用$this
我怎样才能解决这个问题?预期的结果是
首先,你称我为真;在它自己的范围内,所以它不是
据我所知,可以在其范围内调用函数
其次,在一个不知道它属于哪个类的函数范围内调用$this。
第三,正如它所假设的那样,你没有从函数2中返回任何东西。它不会引起任何反响。
看到小提琴了吗
您的代码非常混乱,因为您缺乏基本知识和经验。我强烈建议您阅读有关PHP中OOP的基础知识。
Downvoter,请留下评论并解释我的问题出了什么问题?如果更改echo$obj->$this->two会发生什么;响应$obj->2@在你的情况下,错误将消失。但是为什么不打印呢?老实说,我不知道。据我所知,它应该会返回一些东西……此外,我强烈建议将此问题编辑为较新的问题,因为此问题可以通过删除一个打字错误来解决。我也发现了同样的情况。好极了!我要一个好的@MartinAJ
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();
<?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();