gpt4 book ai didi

php - __autoload($class) 不工作?找不到类错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:53 26 4
gpt4 key购买 nike

我正在学习 PRO PHP AND JQUERY 书中的一些示例,但由于某些原因这些示例不起作用。即使是我从图书站点下载的示例也不起作用。不知道哪里出了问题,因为我完全按照书上的那样做了..

/public/Index.php

include_once '../sys/core/init.inc.php';
$cal = new Calendar($dbo, "2010-01-01 12:00:00"); //ERROR Class 'Calendar' not found

/sys/core/init.inc.php

    function __autoload($class)
{
$filename = "../sys/class/class." . $class . ".inc.php";
if ( file_exists($filename) )
{
include_once $filename;
}
}

/sys/class/class.calendar.inc.php

class Calendar extends DB_Connect
{
private $_useDate;
private $_m;
private $_y;
private $_daysInMonth;
private $_startDay;

/**
* Create a database containg relevant info
*
* @param object $dbo a database object
* @param string $useDate the date to build calender
*/

public function __construct($dbo=NULL, $useDate=NULL)
{
/*
* Call the parent constructor to check db object
*/
parent::__construct($dbo);
}


}

这很烦人,因为书中的每一章都建立在这个简单的基础上。我的猜测是 __autoload() 是问题所在,但我不知道..

最佳答案

文件路径没有指向正确的位置。

一个更好的主意是在 Index.php...

define('DOCROOT', dirname(__FILE__));

...然后像这样修改您的__autoload()...

function __autoload($class)
{
$filename = DOCROOT . "/sys/class/class." . strtolower($class) . ".inc.php";
if ( file_exists($filename) )
{
include_once $filename;
}
}

你应该在包含它之前strotlower()文件名,因为你的类是Calendar但是你的文件名有calendar

关于php - __autoload($class) 不工作?找不到类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5306517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com