本人使用的是php7 + thinkphp3.2.3
问题
在controller中的一个方法中使用
public function gg(){
include_once('TOPData.php');
$topData = new TOPData();
}
:(
Class 'XXXXXXControllerTOPData' not found
<?php
class TOPData
{
public function TestData()
{
echo 11;
}
}
看看吧,多简单的一个class,
查找一
查找了 文件名问题, 文件大小写问题,文件权限问题,都不是。。
甚至查找了是不是 include_once 失效了,为这个贡献了不了少百度和bing的搜索量。
尝试将 class TOPData 清空只保留一个最简单的赋值变量,发现include_once 是有作用的
那么可以确定问题是 include_once 文件后,class找不到
使用了
var_dump('TOPData.php');
if ( ! class_exists('TOPData'))
{
echo 222;
}
来判断这个class是否存在,结果是class还存在。
class明明存在,但是却 Class 'XXXXXXControllerTOPData' not found
查找二
有人说类名和文件名不能相同,否则会报错,经过尝试也不是
休息了十分钟
解决
仔细观察
Class 'XXXXXXControllerTOPData' not found
发现thinkphp貌似一直认为这个TOPData和controller有关,好像对class的路径解析有问题,最后一个反斜线解决问题
public function gg(){
include_once('TOPData.php');
$topData = new TOPData();
}
本菜另外一个服务器,没带反斜线却可以正常调用,环境基本一致。好奇怪,估计是thinkphp什么地方设置不同,有空再深究了。