我无法让它发挥作用。
<?php
function __autoload($classname){
include 'inc/classes/' . $classname . '.class.php';
}
__autoload("queries")
$travel = new queries();
echo $travel->getPar("price");
?>
这是inc / classes / 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]
";
}
}
}
?>
它返回“未找到”类'查询'。怎么了?
编辑:
致命错误:无法在第5行的/index.php中重新声明__autoload()(之前在/index.php:5中声明)
到底是什么?我不能重新声明已经在自己的行中声明的函数,为什么?
答案 0 :(得分:2)
尝试(不使用类自动加载):
function __autoload($classname){
include_once 'inc/classes/' . $classname . '.class.php';
}
$travel = new queries();
另见link
答案 1 :(得分: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.php
或bootstrap.php
文件中注册自动加载器,并且每个加载器只执行一次(此功能允许您定义多个加载器,但是当您拥有第三方库时使用该加载器,它有自己的自动加载器..就像SwiftMailer一样。)
P.S。请学习使用MySQLi或PDO 准备好的陈述。
<强>更新强>
由于您刚刚学习OOP,因此您可能会发现以下几点非常有用:
讲座:
书籍:
答案 2 :(得分:0)
从代码__autoload("queries")
中删除此行,您不需要调用自动加载器,只要遇到任何未声明的类,它就会自动调用它,如果路径正确或者使用require_once而不是include和debug不