Ich löste diese Frage meine eigene. Der Dateiname war falsch lolz.PHP-Klasse nicht gefunden
Hallo an alle!
Ich baue ein CMS wie Drupal und Joomla. Ich arbeite an der Modul-Funktion (Plug-in), und ich bekam die folgende Fehlermeldung:
Fatal error: Class 'settings' not found in C:\wamp\www\SYSTEM\view.php on line 22
Hier ist mein Code:
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 ist offensichtlich zuerst ausgeführt. Mit Ausnahme von customsettings.php, das Datenbankinformationen enthält, werden keine anderen Seiten davor ausgeführt. Wenn ich $ _SERVER [ "db_prefix"] in meinem obigen Code verwendet wird, ist es, weil ich ein superglobalen benötigt, die in customsettings.php gesetzt:
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
Kann mir jemand helfen? Es scheint, dass die index-Funktion von view.php aufgerufen wird, bevor settings.php enthalten ist. Tut mir leid, wenn diese Frage riesig ist, ich möchte nur klar sein. Sagen Sie auch nicht eval() ist böse, ich weiß.
Also ich möchte wissen, warum die Einstellungen Klasse nicht gefunden werden konnte. Wenn Sie mehr Quellcode benötigen, kommentieren Sie bitte diese Frage.
dumm, wie es ist, ich auch eine Namens Problem hatte. Habe die .php vergessen. – craigtadlock