为什么 php5.2 写了个 __autoload 总是没用!!!!

shuyu0 2011-08-23 06:36:38
这个有什么具体点要求么?



这样写有什么错么?
比如根目录下有个 index.php 和 class文件夹,class文件夹里有个ipdo.class.php,定义了个iPDO类。

在index.php中:

// 自动加载
function __autoload($class_name) {
$class = strtolower($class_name);
$class_path = "./class/".$class.".class.php";
if(file_exists($class_name)) {
require_once "$class_path";
}else {
echo "没有类名:$class_path";
}
}
$iPdo=new iPDO();



为什么不可以呢?!!!!

...全文
179 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuyu0 2011-09-05
  • 打赏
  • 举报
回复
我知道了,原来我在原文件中还有 require_once语句,所以就~~~
囧SHI了。


基础不过关呐、~~~

自掴
shuyu0 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ohmygirl 的回复:]

经测试是可以的。附上我写的测试代码

index.php
PHP code
<?
function __autoload($class_name) {
$class = strtolower($class_name);
$class_path = "./class/".$class.".class.php";
if(file_exists($class_path)……
[/Quote]


谢谢你。我单独写两个文件,也是可以的。
但是在这个project下,依然还是不成!!!!!!!!

烦躁死了。

代码和上面一模一样,但还是提醒找不到类!!!

郁卒哈
木目子 2011-08-24
  • 打赏
  • 举报
回复

function __autoload($class_name) {
$class = strtolower($class_name);
echo './class/',$class,'.class.php';
if(file_exists('./class/'.$class.'.class.php')) {
require_once './class/'.$class.'.class.php';
}else {
echo "没有类名:$class_path";
}
}
ohmygirl 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 moocky 的回复:]
PHP code

function __autoload($class_name) {
$class = strtolower($class_name);
echo './class/',$class,'.class.php';
if(file_exists('./class/'.$class.'.class.php')) {
require_once $clas……
[/Quote]

moocky 你的$class_path没有定义。嘿嘿。
木目子 2011-08-24
  • 打赏
  • 举报
回复

function __autoload($class_name) {
$class = strtolower($class_name);
echo './class/',$class,'.class.php';
if(file_exists('./class/'.$class.'.class.php')) {
require_once $class_path;
}else {
echo "没有类名:$class_path";
}
}

看看有没有输入,如果有输出还不正确,可能是你的路径错了,否则把错误贴上来
xuzuning 2011-08-24
  • 打赏
  • 举报
回复
帖出错误信息!
shuyu0 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jordan102 的回复:]

是进入else提示没有类名还是什么的?
[/Quote]

是完全没有效果,提示找不到类。
是不是就是说完全没有调用这个函数啊。

太奇怪了、
那位能否给个最简单的例子呢·········
ohmygirl 2011-08-24
  • 打赏
  • 举报
回复
经测试是可以的。附上我写的测试代码

index.php
<?
function __autoload($class_name) {
$class = strtolower($class_name);
$class_path = "./class/".$class.".class.php";
if(file_exists($class_path)) {
require_once "$class_path";
}else {
echo "没有类名:$class_path";
}
}
$iPdo=new iPDO();
$iPdo->callBack("hiahaihidfe");
?>



class.ipdo.php
<?
class ipdo{
private $time;
public function __construct($time=null){
if(empty($time)){
$this->time=time()-3600;
}
else{
$this->time=$time;
}
}

function callBack($content){
echo "time = ".$this->time;
echo "date = ".date("Y-m-d H:i:s",$this->time);
echo "content = ".$content." for test";
}

}
?>

shuyu0 2011-08-24
  • 打赏
  • 举报
回复
我再好好看看
wbandzlhgod 2011-08-24
  • 打赏
  • 举报
回复
$class 很给力的变量
ohmygirl 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 moocky 的回复:]
PHP code

function __autoload($class_name) {
$class = strtolower($class_name);
echo './class/',$class,'.class.php';
if(file_exists('./class/'.$class.'.class.php')) {
require_once './cl……
[/Quote]

==,else里边的$class_path依然没有定义。
一起混吧 2011-08-23
  • 打赏
  • 举报
回复
是进入else提示没有类名还是什么的?
shuyu0 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jordan102 的回复:]

if(file_exists($class_name)) {

改为:
if(file_exists($class_path)) {
[/Quote]


我已经改了,但是还是不成啊!!!
这里有什么要注意的吗。PHP版本是5.2~~


在线等
THX
For_Ning 2011-08-23
  • 打赏
  • 举报
回复
同上
要风清楚class_name 跟包含class的 file
一起混吧 2011-08-23
  • 打赏
  • 举报
回复
if(file_exists($class_name)) {

改为:
if(file_exists($class_path)) {

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧