Guten Abend,
ich bin gerade dabei, zu versuchen, mit Classes zu arbeiten.
Erklärung:
Ich lade die Seite X und Include den Inhalt aus anderen Seiten.
Oben habe ich meine ganzen Classes auf Seite X mit require eingebunden.
Auf der Seite X werden die Objekte korrekt aus den Classes entnommen und angezeigt.
Nun habe ich eine mysql.func.class.php erstellt und ebenfalls oben auf Seite X mit require eingebunden, dabei entsteht ein Problem.
Folgendes komische Problem:
In den jeweiligen Funktionen, in der mysql.func.class.php, binde ich eine connection.php ein, diese erstellt lediglich eine PDO Verbindung zur Datenbank her und es funktioniert.
Soweit so gut, aber wenn ich in meiner mysql.func.class.php, die Objekte aus der anderen Class laden möchte (die oben auf Seite X über der mysql.func.class.php required werden), dann bekomme ich in den Fehler: Notice: Undefined variable.
Dann kam mir der Gedanken, dann require ich die Classes in meiner function(), weil diese anscheinend nicht gefunden werden, obwohl sie über dieser Class (mysql.func.class.php) required werden.
Dann habe ich es gemacht und bekomme den Fehler: Fatal error: Cannot redeclare class.
Wenn ich diese Class auf der Seite X über der mysql.func.class.php, die nicht redeclare werden kann, ausklammere, dann funktioniert meine function() und die Objekte aus der Class werden richtig geladen.
Jetzt einmal in Code:
Meine Seite X
<?php
session_start();
require("./config/connection.php");
require("./classes/mysql.class.php"); // hier sind die Objekte, die ich in der Class darunter laden möchte
require("./classes/mysql.func.class.php"); // die Class mit den function() in der, der Error passiert
require("./classes/labels.class.php");
require("./functions/guard.php");
?>
<html>
<body>
<?php
include("./templates/navigation_bar.php");
if(isset($_GET["page"])) $page = $_GET["page"];
else $page = "home";
if(file_exists("pages/$page.php"))include("pages/$page.php"); // hier wird meine Seite geladen
else include("pages/home.php");
include("./templates/footer_bar.php");
?>
</body>
</html>
Alles anzeigen
Meine mysql.func.class.php
<?php
class funcs {
function getFracDescById($id)
{
require("./config/connection.php");
require("./classes/mysql.class.php"); // hier der "redeclare" Fehler, wenn ich es nicht ausklammere. Sobald ich es ausklammere, dann bekomme ich den Error Notice: Undefined variable
// Wenn ich aber auf der Seite X mysql.class.php ausklammere und es hier so stehen lasse, dann funktioniert der Code hier.
$frac_id = filter_var($id, FILTER_SANITIZE_SPECIAL_CHARS);
$query = $dbh->prepare("SELECT `$mysql->db_frak_desc` FROM `$mysql->db_frak_table` WHERE `$mysql->db_frak_id` = :fid");
$query->execute(array(":fid"=>$frac_id));
$row = $query->rowCount();
$fetch = $query->fetch();
return $fetch[$mysql->db_frak_desc];
}
}
$mysql_funcs = new funcs();
?>
Alles anzeigen
Ich kann aber nicht auf Seite X meine mysql.class.php ausklammern, weil sonst die Objekte nicht auf der geladenen Seite angezeigt werden d.h. die Class muss drin bleiben, weil sie benötigt wird.
Vielen Dank für Hilfe im Voraus.