大家好,你们可以帮助我。
我有下一个代码
的index.php
set_include_path(get_include_path()
.PATH_SEPARATOR.'application/controllers'
.PATH_SEPARATOR.'application/models'
.PATH_SEPARATOR.'application/views');
spl_autoload_register();
$front = new Controller;
$front->route();
Controller.php这样
public function route(){
if(class_exists($this->getController())){...}......
我有一种方法。谨慎使用spl_autoload_register();
我可以写
function __autoload($classname) {
@include_once $classname.'.php';
}
但根据php文档,我想使用spl_autoload_register ... 如果您需要完整的代码,我很乐意展示它。
谢谢!
答案 0 :(得分:1)
你可以使用file_exists,我想......
http://php.net/manual/en/function.file-exists.php
if( file_exists( 'path/to/' . $classname / '.php' ) )
{
include_once( $classname.'.php' );
}
为什么要自动加载不存在的类?
你也可以试试这个:
if( !include_once( $classname.'.php' ) )
{
//throw error, or do something... or nothing
throw new Exception( "Autoload for $classname failed. Bad path." );
}
答案 1 :(得分:1)
这是我使用的代码(我希望它会给你一个想法):
<?php
Class ClassAutoloader {
function __construct() {
spl_autoload_register(array($this, 'loader'));
}
private function loader($className) {
$classPath = dirname(__FILE__).DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR;
if(file_exists( $classPath.strtolower($className).'.php' )) {
include $classPath.strtolower($className).'.php' ;
} else if(file_exists( $classPath.$className.DIRECTORY_SEPARATOR.strtolower($className).'.php' )) {
include $classPath.$className.DIRECTORY_SEPARATOR.strtolower($className).'.php';
}
}
}
答案 2 :(得分:0)
您可以使用
关闭错误 <?PHP
error_reporting(E_ALL & ~E_WARNING)
?>