So i have been working on a small framework for myself and i ran into a problem i really can’t seem to figure out how or why i have this problem. i get an error when i try to use any class that is loaded through my autoload method “Cannot redeclare class” the class name bla bla so the error says it’s on line 5 of my config class where i actually create the class name. So im really stuck and have no clue in witch way to go.
the classes below are the classes i use to call and load the config class and the config class it’ self.
obj_bootstrap.php
define('FW_DIR' , 'framework');
define('APP_DIR' , 'application');
define('DS' , '/');
define('EXT' , '.php');
define('VER' , '0.0.1');
define('PHP' , '5.3.2');
define('CWD' , str_replace('\\\\' , '/' , getcwd()) . DS);
define('FW' , CWD . FW_DIR . DS);
define('APP' , CWD . APP_DIR . DS);
if(PHP >= PHP_VERSION){
exit('your php version is not compatible with our supported versions of php.
Please upgrade your version of php at minimum to version ' . PHP);
}
require FW . 'obj_loader' . EXT;
spl_autoload_register(array('obj_loader' , 'autoloader'));
obj_config::getItem('db_server');
obj_loader.php
class obj_loader{
private static $_loaded = array();
private static $_root;
public static function setRootDir($root_dir = ''){
if($root_dir !== '' && is_string($root_dir)){
return self::$_root = (string)$root_dir;
}elseif($root_dir !== '' && is_array($root_dir)){
return self::$_root = $root_dir;
}else{
return false;
}
}
public static function loadFile($filename , $dir = ''){
if(isset(self::$_loaded[$filename])){
require self::$_loaded[$filename];
}
$_roots = array(FW , APP , self::$_root);
foreach($_roots as $base){
if($dir === '' && file_exists($base . $filename . EXT)){
require $base . $filename . EXT;
self::$_loaded[$filename] = $base . $filename . EXT;
}elseif($dir !== '' && file_exists($base . $dir . DS . $filename . EXT)){
require $base . $dir . DS . $filename . EXT;
self::$_loaded[$filename] = $base . $dir . DS . $filename . EXT;
}else{
return false;
}
}
}
public static function loadClass($classname , $dir = ''){
if(self::loadFile($classname , $dir) !== false){
self::loadFile($classname , $dir);
if(!class_exists($classname , false)){
throw new obj_exception('Load Error: seems the class '.$classname.' was not loaded properly');
}
}else{
return false;
}
}
public static function loadLibrary($classname){
self::loadClass($classname);
}
public static function loadController($classname){
self::loadClass($classname , 'controllers');
}
public static function loadModel($classname){
self::loadClass($classname , 'models');
}
public static function loadView($classname){
self::loadClass($classname , 'views');
}
public static function loadExtension($classname){
self::loadClass($classname , 'extension');
}
public static function loadModuleController($controller , $module){
self::loadClass($controller , 'modules' . DS . $module);
}
public static function loadModuleModel($model , $module){
self::loadClass($model , 'modules' . DS . $module);
}
public static function loadModuleView($view , $module){
self::loadClass($view , 'modules' . DS . $module);
}
public static function autoloader($classname){
if(self::loadFile($classname) !== false){
self::loadFile($classname);
}elseif(self::loadFile($classname , 'controllers') !== false){
self::loadFile($classname , 'controllers');
}elseif(self::loadFile($classname , 'models') !== false){
self::loadFile($classname , 'models');
}elseif(self::loadFile($classname , 'views') !== false){
self::loadFile($classname , 'views');
}elseif(self::loadFile($classname , 'extensions') !== false){
self::loadFile($classname , 'extensions');
}else{
require FW . 'obj_exception' . EXT;
throw new obj_exception('Autoload Error: the classname '
.(string)$classname.' could not be located or loaded by the autoloader');
}
}
public static function registerAutoloader(){
spl_autoload_register(array('obj_loader' , 'autoloader'));
}
}
obj_config class
bj_loader::loadFile('obj_settings' , 'settings');
class obj_config{
private $_config = array();
private $_config_count = 0;
private static $_instance;
private function __construct(){}
protected static function instance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self;
}
return self::$_instance;
}
protected function set($key , $data){
if(!isset($this->_config[$key])){
$this->_config[$key] = $data;
$this->_config_count++;
return true;
}
return false;
}
protected function get($key){
if(isset($this->_config[$key])){
return $this->_config[$key];
}
return false;
}
protected function clean($key){
if(isset($this->_config[$key])){
unset($this->_config[$key]);
return true;
}
return false;
}
protected function getAll(){
return $this->_config;
}
protected function getCount(){
$count = $this->_config_count;
return $count;
}
public static function setItem($key , $data){
return self::instance()->set($key , $data);
}
public static function getItem($key){
return self::instance()->get($key);
}
public static function deleteItem($key){
return self::instance()->clean($key);
}
public static function getConfig(){
return self::instance()->getAll();
}
public static function countConfigItems(){
return self::instance()->getCount();
}
}