PHP类中调用其他函数输出时出现内部服务器错误如何解决?
问题分析与解决方案:PHP类中私有方法调用错误导致500内部服务器错误
兄弟,你碰到的这个问题其实是PHP类方法调用的基础语法问题,很容易踩坑!
核心问题出在类内部调用方法的方式:你在encode_string()里直接写return_string(),PHP会把它当成一个全局函数去查找,但这个全局函数根本不存在,所以直接触发了致命错误,表现就是内部服务器错误。
错误原因拆解
return_string()是TestClass的私有方法,属于类的成员方法,不是全局作用域的函数。在类的其他方法内部调用它时,必须通过类的实例引用$this->来访问,这样PHP才知道你要调用的是当前类里的方法。
修正后的代码
<?php class TestClass{ private function return_string(){ $test = 'test variable'; return $test; } private function encode_string() { // 关键:用$this->调用类内部的私有方法 $x = $this->return_string(); return json_encode($x); } } ?>
补充说明
你之前尝试让return_string()直接返回字符串仍报错,就是因为调用方式不对——哪怕方法返回的内容没问题,只要没加$this->,PHP还是会去全局找这个函数,自然找不到。而把$x设为普通字符串时正常,也正好验证了encode_string()本身的逻辑是没问题的,问题就出在方法调用的语法上。
内容的提问来源于stack exchange,提问作者WhynarySearch
相关产品推荐
相关产品推荐

