He resuelto esta pregunta por mi cuenta. El nombre del archivo estaba equivocado lolz.Clase de PHP no encontrada
¡Hola a todos!
Estoy construyendo un CMS como Drupal y Joomla. Estoy trabajando en la función de módulo (plugins), y tengo el siguiente error:
Fatal error: Class 'settings' not found in C:\wamp\www\SYSTEM\view.php on line 22
Aquí está mi código:
start.php
<?php
//First of all, start with some advertisement
header("X-Powered-By:ZOMFG CMS, and ofcourse PHP, but that's less important");
//Then less impotant stuff lololol.
session_start(); //Start a session
mysql_connect($db_host, $db_user, $db_pass); //Connect to database
mysql_select_db($db_name); //Select a database
//Load core
require_once("core.php");
//Load modules
$res_modules = mysql_query("SELECT * FROM ".$_SERVER["db_prefix"]."modules WHERE enabled=1");
echo mysql_error();
$module_exists = array();
while($row_modules = mysql_fetch_array($res_modules))
{
//Load module
$name = $row_modules["name"];
modules::load_module($name);
//and initialize it
eval($name."::init();");
//Yes, it exists
$module_exists[$name] = true;
}
//Check if the user wants shit from a module
if(isset($_GET["m"]))//Yes the user want it
{
//Does the module exist and activated, and has it a function called view?
if(isset($module_exists[$_GET["m"]]) && method_exists($_GET["m"], "view"))//Yep
{
//Load view (should be an array)
eval("\$module_view = ".$_GET["m"]."::view();");
if(!is_array($module_view))//Not an array :(
{
error::e500module($_GET["m"], $_SERVER["REQUEST_URI"]);
}
else//The error would kill the entire script, m'kay
{
view::index();
}
}
else//Nope, so display error
{
error::e404($_SERVER['REQUEST_URI']);
}
}
settings.php
<?php
class settings
{
function get($what)
{
$result_get = mysql_query("SELECT value FROM ".$_SERVER["db_prefix"]."settings WHERE key='$what'");
if(mysql_num_rows($result_get) > 0)
{
$row_get = mysql_fetch_array($result_get);
return $result_get["value"];
}
else
{
return -1;
}
}
}
core.php
<?php
//Load core classes
require_once("settings.php");
require_once("error.php");
require_once("theme.php");
require_once("view.php");
require_once("modules.php");
view.php
<?php
class view
{
function head()
{
include("../THEMES/".settings::get("theme")."/head.php");
}
function foot()
{
include("../THEMES/".settings::get("theme")."/foot.php");
}
function left()
{
include("../THEMES/".settings::get("theme")."/left.php");
}
function right()
{
include("../THEMES/".settings::get("theme")."/right.php");
}
function index()
{
include("../THEMES/".settings::get("theme")."/index.php");
}
}
start.php se ejecutará en primer lugar, obviamente. No se ejecutan otras páginas antes, excepto customsettings.php que contiene información de la base de datos. Si usara $ _SERVER [ "db_prefix"] en mi código anterior, es porque necesitaba un superglobal que se encuentra en customsettings.php:
customsettings.php
<?php
$db_host = "localhost"; //Database host
$db_user = "root"; //Database user
$db_pass = "you may not know this"; //Database password
$db_name = "zomfg"; //Database name
$_SERVER["db_prefix"] = "zomfg_";//Prefix, needs to be superglobal
¿Alguien puede ayudarme? Parece que se llama a la función de índice de view.php antes de que se incluya settings.php. Lo siento si esta pregunta es enorme, solo quiero ser claro. Además, no digas que eval() es malo, lo sé.
Así que quiero saber por qué la clase de configuración no se pudo encontrar. Si necesita más código fuente, por favor coméntelo a esta pregunta.
estúpida como lo es, también tenía un problema de nomenclatura. Olvidé el .php. – craigtadlock