Tôi đã giải quyết câu hỏi này của riêng mình. Tên tập tin sai lầm lolz.Không tìm thấy lớp PHP
Xin chào mọi người!
Tôi đang xây dựng một CMS như Drupal và Joomla. Tôi đang làm việc trên các tính năng mô-đun (plug-in), và tôi đã nhận được lỗi sau:
Fatal error: Class 'settings' not found in C:\wamp\www\SYSTEM\view.php on line 22
Đây là mã của tôi:
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 được rõ ràng thực hiện đầu tiên. Không phải các trang khác được thực thi trước nó, ngoại trừ customsettings.php chứa thông tin cơ sở dữ liệu. Nếu tôi sử dụng $ _SERVER [ "db_prefix mà"] trong mã của tôi ở trên, đó là vì tôi cần một người superglobal mà được đặt trong 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
thể ai giúp tôi? Có vẻ như chức năng chỉ mục của view.php được gọi trước khi bao gồm settings.php. Xin lỗi nếu câu hỏi này là rất lớn, tôi chỉ muốn được rõ ràng. Ngoài ra đừng nói eval() là ác, tôi biết.
Vì vậy, tôi muốn biết lý do tại sao các lớp cài đặt không thể tìm được. Nếu bạn cần thêm mã nguồn, vui lòng nhận xét cho câu hỏi này.
ngốc như nó có, tôi cũng đã có một vấn đề đặt tên. Quên tệp .php. – craigtadlock