在PHP OOP中找不到类
我不能让它工作在PHP OOP中找不到类,php,oop,autoloader,Php,Oop,Autoloader,我不能让它工作 <?php function __autoload($classname){ include 'inc/classes/' . $classname . '.class.php'; } __autoload("queries") $travel = new queries(); echo $travel->getPar("price"); ?> 这是inc/classes/querys.
<?php
function __autoload($classname){
include 'inc/classes/' . $classname . '.class.php';
}
__autoload("queries")
$travel = new queries();
echo $travel->getPar("price");
?>
这是inc/classes/querys.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中声明) 怎么回事?我无法重新声明已在其自己的行中声明的函数,为什么?请尝试这样做(无类自动加载): 另请参见此试试看(不自动加载类):
还可以看到这一点,你应该学会如何利用: 您应该在
index.php
或bootstrap.php
文件中注册自动加载器,并且每个加载器只注册一次(此功能允许您定义多个加载器,但当您有第三方库时,会使用此功能,该库有自己的自动加载器..就像SwiftMailer一样)
另外,请学习在MySQLi或PDO中使用准备好的语句
更新
由于您刚刚学习OOP,以下几点您可能会发现非常有用:
讲座:
index.php
或bootstrap.php
文件中注册自动加载器,并且每个加载器只注册一次(此功能允许您定义多个加载器,但当您有第三方库时,会使用此功能,该库有自己的自动加载器..就像SwiftMailer一样)
另外,请学习在MySQLi或PDO中使用准备好的语句
更新
由于您刚刚学习OOP,以下几点您可能会发现非常有用:
讲座:
\uuuu autoload(“查询”)
,您不需要调用autoloader,它将在遇到任何未声明的类时自行调用,并使用require\u一次,而不是在路径正确与否的情况下使用include和debug。从您的代码中删除这一行\uu autoload(“查询”)
,您不需要调用autoloader,它将在遇到任何未声明的类时自行调用,并使用require_一次,而不是include和debug(如果路径正确与否)。请不要用无意义的内容污染您的问题,以免绕过“代码太多,散文不够”的限制。@Michael,还有什么要做的?这个限制在一般情况下可能是有意义的,但在这种情况下,它阻止了一个先验的有效问题被提出。我已经编辑了它,我不担心:)@djpredator 17:你的php配置了吗?请不要用无意义的内容来污染你的问题,以免绕过“代码太多,散文不够”的限制。@Michael,还有什么要做的?这个限制在一般情况下可能是有意义的,但在这种情况下,它阻止了一个先验的有效问题被问到。我已经编辑了它,我不担心:)@djpredator 17:你的php配置了吗?我按照你的建议做了,但我们回到了“未找到类查询”的问题。我建议函数自动加载,但是你在函数中使用了函数load并使之成为函数_autoload-var_dump($classname)-可能路径有问题。致命错误:无法在inc/classes/querys.class.php的第4行重新声明类查询这是我第一次声明它的行(没有第二次…)不要使用call _uautoload(“查询”)而是包含使用include\u onceeen即使我只包含一次文件(正确),它也无法识别类。我按照您的建议做了,但我们回到了“未找到类查询”问题。我建议函数自动加载,但您使用函数加载,并在函数自动加载-var\u dump($classname)中这样做-路径可能有问题。致命错误:无法在inc/classes/querys.class.php的第4行重新声明类查询这是我第一次声明它的那一行(没有第二次…),不要使用call\u autoload(“查询”),而是使用use include\u onceen,即使我只在文件中包含了一次(正确),我刚开始使用OOP,准备好的语句会晚一点出现,但非常感谢你的建议:)@djtradapter17,添加了一些可能对你有帮助的链接,如果我能投票支持你的帖子,我会至少做两次:)太多了!有一行我忘了加上:。从我看来,大多数PDO教程都非常糟糕,而且充满了错误/可注入代码。我刚开始使用OOP,准备好的语句会晚一点出现,但非常感谢您的建议:)@djtradator 17,添加了一些可能对您有帮助的链接如果我能投票支持您的帖子,我至少会做两次:)太多了!有一行我忘了加上:。从我看来,大多数PDO教程都非常糟糕,并且充满了错误/可注入代码。
function __autoload($classname){
include_once 'inc/classes/' . $classname . '.class.php';
}
$travel = new queries();
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;
});