php类甚至在require_once文件中也找不到


php Class not found even in require_once file

我有一个奇怪的问题。在它的Plans.php文件中有一些Plans类,它包含在主php中,但似乎没有被系统加载。

看,这是action.php文件

<?php
// action.php gets 3 parameters:
//  - CONTROLLER: one on AUTH, SYSTEM, USER, ADS 
//  - ACTIVITY: one on LOGIN, PLANS, CONTACTS, GUESTS, CONFIG, MESSAGES
//  - ACTION: LIST, VIEW, EDIT, INSERT, UPDATE
include './config/config.php';
include './utils/Connect_db.php';
require_once './model/Plans.php';
require_once './controllers/MainController.php';
require_once './controllers/AuthController.php';
require_once './controllers/UserController.php';
require_once './classes/ValidateUser.php';
if (class_exists('Plans')) {
    error_log('action: Plans exists');
} else {
    error_log('action: Plans NOT exists');
}
if (class_exists('AuthController')) {
    error_log('action: AuthController exists');
} else {
    error_log('action: AuthController NOT exists');
}
$main = new MainController();
?>

我放入了一些class_exists函数来检查Plans类是否已加载。

以下是error_log文件输出:

[13-Feb-2015 01:04:39 Europe/Brussels] action: Plans NOT exists
[13-Feb-2015 01:04:39 Europe/Brussels] action: AuthController exists

显然,稍后使用Plans类会导致Plans类未找到

这是我的Plans.php文件:

<?php
class Plans {
    private $_con;
    private $_sql;
    function __construct($users_id, $plans_id) {
        $this->_con = Connect_db();
        switch(func_num_args()) {
            case 0:
                break;
            case 1: // One argument to be users_id
                $this->_sql = "(SELECT u.users_nic, g.status, p.*"
                ." FROM users u, plans p LEFT JOIN guests g"
                ." ON g.plans_id=p.plans_id AND g.users_id=p.users_id"
                ." WHERE u.users_id=p.users_id AND p.users_id=".$users_id.")"
                    . " UNION"
                    . " (SELECT u.users_nic, g.status, p.*"
                ." FROM plans p, users u, guests g"
                ." WHERE u.users_id=p.users_id AND g.plans_id=p.plans_id"
                ." AND g.users_id=".$_users_id." AND p.users_id!=".$users_id." )"
                    ." ORDER BY día DESC";
                break;
            case 2: // Two arguments to be users_id y plans_id
                $this->_sql = "SELECT u.users_nic, g.status, p.*"
                ." FROM users u, plans p"
                ." LEFT JOIN guests g"
                ." ON g.plans_id=p.plans_id AND g.users_id=".$users_id
                ." WHERE u.users_id=p.users_id AND p.plans_id=".$plans_id;
                break;
        }
    } 
    function __destruct(){
        // TO DO
        mysqli_close($this->_con);
    }
    public function dir() {
        $res = mysqli_query($this->_con, $this->_sql)
            or die("Fallo de Consulta");
        $arrSalida = array();
        while ($fila = mysqli_fetch_array($res)) {
            $arrSalida[] = $fila;
        }
        return $arrSalida;
    }
}
?>

这个班怎么了?切换是为了用一个或两个参数实现__construct。并且存在模型文件夹,并且存在具有正确名称的文件。

希望有人能帮忙。谢谢

令人难以置信的是,问题出现在我的php代码中的隐藏字符中。我删除了这个文件,创建了一个新的文件,在没有复制/粘贴的情况下再次键入代码,问题就消失了。遗憾的是,我没有保留这个文件,让另一个文本编辑器来分析它,因为我可以看到坏角色。