php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-10-2009, 22:47
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard Klasse bzw Variable in Klasse Problem

Hey,

ich habe ein Problem mit der Verwendung einer Klasse innerhalb einer Klasse.

Ich habe eine Datei namens "common.php" welche meine klassen lädt. Diese Datei sieht so aus:
PHP-Code:
<?php
// Fehlerreporting
error_reporting(E_ALL);

// Definition des Projektnamens
define('PROJECT'"/gsadmin");

// Für Verzweigungen, die aufs File Verzeichnis zeigen sollen
define('DOCUMENT_ROOT'$_SERVER['DOCUMENT_ROOT'].PROJECT);

// Für Web-Addresierung
define('HTTP_ROOT'"http://".$_SERVER['HTTP_HOST'].PROJECT);

// Datenbanksettings und weitere Systemweite Einstellungen
require_once DOCUMENT_ROOT."/settings.php";

// Settings Klasse einbinden
require_once DOCUMENT_ROOT."/inc/classes/Settings/class.Settings.php";
$Settings Settings::getInstance(DOCUMENT_ROOT."/inc/settings/settings.ini");

// Alle Klassen einbinden 
require_once DOCUMENT_ROOT."/inc/includeAllClasses.php";

// Datenbank Objekt erstellen
$DB = new DB();

// global Verfügbares Sicherheitsfunktionen Objekt erstellen
$SECURITY = new Security();

// global verfügbares Session Objekt erstellen
new SessionHandler();

// global verfügbares BB-Code Objekt erstellen
$BBCODE = new BBCode();
?>
Jetzt möchte ich in meiner Datenbank Klasse auf die Settings Klasse zugreifen. Also z.b auf $Settings->dbServer . Wenn ich über meiner DB Klasse
PHP-Code:
echo $Settings->dbServer;
die(); 
einfüge funktioniert das auch, jedoch innerhalb der Klasse in einer Funktion, z.b Konstuktor bekomme ich die Notice:

Undefined variable: Settings
Skript: /opt/lampp/htdocs/gsadmin/inc/classes/DB/class.DBMySQL.php Line: 46

Trying to get property of non-object
Skript: /opt/lampp/htdocs/gsadmin/inc/classes/DB/class.DBMySQL.php Line: 46

und die Variable wird nicht ausgegegen. Zeile 46 ist diese hier:
PHP-Code:
echo $Settings->dbServer
Hier meine Datenbank Klasse:
Das erste echo ... funktioniert, das zweite gibt dann die Notice und die Variable nicht mehr aus.
PHP-Code:
<?php
echo $Settings->dbServer;
echo 
"<br />";

class 
DB
{
    
// Datenbankverbindungsobjekt
    
public $MySQLiObj null;
    
    
// Letzte SQL Abfrage
    
public $lastSQLQuery null;
    
    
// Status der letzen Abfrage
    
public $lastSQLStatus null;
        
    
    public function 
__construct()
    {
        
        echo 
$Settings->dbServer;
        echo 
"<br />";
        die();
        
        
        
        
// Erstellen eines MySQLi- Objektes
        
$this->MySQLiObj = new mysqli($Settings->dbServer$Settings->dbUser$Settings->dbPass$Settings->dbName);
        
        
// Prüfen ob ein Fehler aufgetreten ist
        
if(mysqli_connect_errno())
        {
            echo 
"Keine Verbindung zur Datenbank m&ouml;glich.";
            
trigger_error("MySQL-Connection-Error"E_USER_ERROR);
            die();
        }
    }
        
    public function 
__destruct()
    {
        
$this->MySQLiObj->close();
    }
    
    
    public function 
query($sqlQuery$resultset false)
    {
        
// Letzte SQL Abfrage aufzeichnen
        
$this->lastSQLQuery $sqlQuery;
        
        
// Hier kann später die  Protokoll Methode doLog() aktiviert werden
        //$this->doLog($sqlQuery);
        
        
$result $this->MySQLiObj->query($sqlQuery);
        
        
// Das Ergebnis als MySQL-Result plain zurückgeben
        
if($resultset == true)
        {
            
// Status setzen
            
if ($result == false)
            {
                
$this->lastSQLStatus false;
            }
            else
            {
                
$this->lastSQLStatus true;
            }
            
            return 
$result;
        }
        
$return $this->makeArrayResult($result);
        
        return 
$return;
    }
    
    
    public function 
lastSQLError()
    {
        return 
$this->MySQLiObj->error;
    }
    
    
    private function 
makeArrayResult($ResultObj)
    {
        if (
$ResultObj === false)
        {
            
// Fehler trat auf, z.b Primärschlüssel schon vorhanden
            
$this->lastSQLStatus false;
            return 
false;
        }
        else
            if (
$ResultObj === true)
            {
                
// UPDATE,- INSERT etc. es wird nur true zurückgegeben
                
$this->lastSQLStatus true;
                return 
true;
            }
            else
                if (
$ResultObj->num_rows == 0)
                {
                    
// Kein Ergebnis eines SELECT, SHOW, DESCRIBE oder EXPLAIN Statements
                    
$this->lastSQLStatus true;
                    return array ();
                }
                else
                {
                    
$array = array ();
                    
                    while (
$line $ResultObj->fetch_array(MYSQL_ASSOC))
                    {
                        
// Alle Bezeichner in $line kleinschreiben
                        
array_push($array$line);
                    }
                    
                    
// Status der Abfrage setzen
                    
$this->lastSQLStatus true;
                    
                    
// Das Array sieht nun genauso aus, wie das Ergebnis von DBX
                    
return $array;
                }

             }
}
Wie kann ich innerhalb der DB Klasse auch auf diese Variablen zugreifen?
Hier das ganze mal "Live" zusehen

Danke im Vorraus
Mit Zitat antworten
  #2 (permalink)  
Alt 06-10-2009, 23:36
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

PHP: Variable scope - Manual

Du hast 3 Möglichkeiten:
1. Übergib $Settings als Parameter an den Konstruktor.
2. Verwende das Registry- oder Singleton-Pattern.
3. Greife über $GLOBALS zu.

Die letzte Möglichkeit habe ich nur der Vollständigkeit wegen erwähnt. Diese Methode ist verpönt.
Wenn du noch an anderen Stellen, z.B. in anderen Klassen auf $Settings zugreifen mußt, dann verwende eines der erwähnten Pattern, vorzugsweise Registry.
Wenn nicht, dann reiche die Variable als Parameter in die Funktion.
Mit Zitat antworten
  #3 (permalink)  
Alt 08-10-2009, 17:54
2Bad4You
 Registrierter Benutzer
Links : Onlinestatus : 2Bad4You ist offline
Registriert seit: Jun 2007
Beiträge: 101
2Bad4You ist zur Zeit noch ein unbeschriebenes Blatt
2Bad4You eine Nachricht über ICQ schicken
Standard

Danke für deine Hilfe :-) . Ich habe mich für die 2te Möglichkeit entschieden und nun funktioniert alles. Vielen Dank!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[OOP] andere Klasse an aktuelle Klasse anhängen Proggy PHP Developer Forum 19 01-10-2006 19:07
[OOP] Klasse benötigt andere Klasse / Pfadproblem compuboy1010 PHP Developer Forum 12 11-05-2006 10:10
[OOP] In einer Klasse eine andere Klasse verwenden? JamieWolf PHP Developer Forum 34 26-08-2004 16:20
Klasse in Klasse - Problem mit Variablen s02 PHP Developer Forum 6 17-06-2004 12:21
Klasse::Klasse --> und dann auf Attribut der Mutterklasse zurückgreifen? Pascal P. PHP Developer Forum 7 14-04-2003 19:48

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:06 Uhr.