Heim > Backend-Entwicklung > PHP-Tutorial > 使用spl_autoload_register为何会出现HTTP500错误?

使用spl_autoload_register为何会出现HTTP500错误?

WBOY
Freigeben: 2016-06-06 20:19:42
Original
1306 Leute haben es durchsucht

本人在校学生一枚,PHP目前刚刚学习完面向对象部分,目前正在理解学习SPL库的使用,发现SPL部分有些还是不好理解,学习的项目根目录如下...还望各位大神们指点一二

PSR-0
├── App
│   └── Controller
│            └── Home
│                    └── Revamp.php
├── Users
│   ├── Loader.php
│   └── Object.php
└── index.php

加载类如下Loader.php

<code><?php namespace Users;

class Loader{
    
    public static function autoload($class){
       require BASEDIR. '/'. str_replace('\\', '/', $class) .'.php';
    }
}
</code></code>
Nach dem Login kopieren
Nach dem Login kopieren

Revamp.php

<code><?php namespace App\Controller\Home;

class Revamp {
    
    public static function load(){
        
        echo __METHOD__;
    }
}
</code></code>
Nach dem Login kopieren
Nach dem Login kopieren

入口文件如下index.php:

<code><?php define('BASEDIR', __DIR__);

/**
 * 引入自动加载引导类
 */
require_once BASEDIR . '/Users/Loader.php';

// 将加载函数注册到 SPL 
spl_autoload_register('\\Users\\Loader::autoload');

Users\Objet::load();
App\Controller\Home\Revamp::load();</code></code>
Nach dem Login kopieren
Nach dem Login kopieren

第二个 Revamp类的加载为何会一直有问题?出现HTTP500错误

回复内容:

本人在校学生一枚,PHP目前刚刚学习完面向对象部分,目前正在理解学习SPL库的使用,发现SPL部分有些还是不好理解,学习的项目根目录如下...还望各位大神们指点一二

PSR-0
├── App
│   └── Controller
│            └── Home
│                    └── Revamp.php
├── Users
│   ├── Loader.php
│   └── Object.php
└── index.php

加载类如下Loader.php

<code><?php namespace Users;

class Loader{
    
    public static function autoload($class){
       require BASEDIR. '/'. str_replace('\\', '/', $class) .'.php';
    }
}
</code></code>
Nach dem Login kopieren
Nach dem Login kopieren

Revamp.php

<code><?php namespace App\Controller\Home;

class Revamp {
    
    public static function load(){
        
        echo __METHOD__;
    }
}
</code></code>
Nach dem Login kopieren
Nach dem Login kopieren

入口文件如下index.php:

<code><?php define('BASEDIR', __DIR__);

/**
 * 引入自动加载引导类
 */
require_once BASEDIR . '/Users/Loader.php';

// 将加载函数注册到 SPL 
spl_autoload_register('\\Users\\Loader::autoload');

Users\Objet::load();
App\Controller\Home\Revamp::load();</code></code>
Nach dem Login kopieren
Nach dem Login kopieren

第二个 Revamp类的加载为何会一直有问题?出现HTTP500错误

打开错误显示,看看具体的错误是什么。估计你这个情况和 ClassName 的处理有关,注意类名前面还有一个斜杠的

看你发的目录结构,Controller和Home放在同一级了

我按照你的代码敲了一遍,没做任何改变,可以正常输出~

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage