类未找到PHP OOP(Class not found PHP OOP)

2019-10-31 20:49发布

我不能得到这个工作。

<?php


        function __autoload($classname){
            include 'inc/classes/' . $classname . '.class.php';
        }



__autoload("queries")

$travel = new queries();
echo $travel->getPar("price");

?>

这是INC /班/ queries.class.php文件。

<?

 class queries {

        function getPar($par, $table='travel', $type='select') {

            $result = $db->query("
             $type *
             FROM $table
             WHERE
             $par LIKE
            ");
            while ($row = $result->fetch_assoc()) {

                return "
                 $row[$par]
                ";
            }

    }
}

?>

它返回“类‘查询’未找到”。 它出什么问题了?

编辑:

致命错误:不能重新声明__autoload()(以前在/index.php:5声明)中的index.php在第5行

我勒个去? 我不能重新声明是在自己的行已经宣布,为什么功能?

Answer 1:

相反,那个可怕可憎的,你应该学会如何利用spl_autoload_register()

spl_autoload_register( function( $classname ){

    $filename = 'inc/classes/' . $classname . '.class.php';

    if ( !file_exists( $filename) ){
        throw new Exception("Could not load class '$classname'.". 
                            "File '$filename' was not found !");
    }

    require $filename;

});

你应该注册在自动装卸index.phpbootstrap.php的文件,并做到这一点只有一次每装载机(这种能力可以定义多个装载机,但是这使用,当你有第三方库,它有自己的自动加载机..像在SwiftMailer的情况下)。

PS请学会使用与库MySQLi或PDO 准备语句

更新

既然你是刚刚学OOP,这里有几件事情,这可能对您有用:

讲座内容:

  • 高级OO模式
  • 继承,多态与测试
  • 认识到臭代码
  • 全球国家和单身
  • 不要认准的事!

图书:

  • PHP的面向对象的解决方案
  • 企业应用架构模式


Answer 2:

尝试这样(没有自动加载类):

function __autoload($classname){
    include_once 'inc/classes/' . $classname . '.class.php';
}
$travel = new queries();

也看到这个链接



Answer 3:

从你的代码删除此行__autoload("queries")你不需要调用自动加载它会被它自身被称为每当遇到任何未申报类,并使用require_once而非include和调试,如果你的路径是否正确。



文章来源: Class not found PHP OOP