明明已经include_once() 但还是报错Class 'XXXXX\Controller\TOPData' not found

本人使用的是php7 + thinkphp3.2.3

 

问题

在controller中的一个方法中使用


public function gg(){
include_once('TOPData.php');
    $topData = new TOPData();
}

:(

Class 'XXXXXX\Controller\TOPData' 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 'XXXXXX\Controller\TOPData' not found


查找二


有人说类名和文件名不能相同,否则会报错,经过尝试也不是


休息了十分钟



解决


仔细观察
Class 'XXXXXX\Controller\TOPData' not found
发现thinkphp貌似一直认为这个TOPData和controller有关,好像对class的路径解析有问题,最后一个反斜线解决问题
public function gg(){
include_once('TOPData.php');
$topData = new \TOPData();
}
本菜另外一个服务器,没带反斜线却可以正常调用,环境基本一致。好奇怪,估计是thinkphp什么地方设置不同,有空再深究了。

 
 



posted @ 2020-05-06 20:00  奥雷连诺  阅读(566)  评论(0编辑  收藏  举报