Ankündigung

Einklappen
Keine Ankündigung bisher.

problem mit einer methode in einer klasse

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem mit einer methode in einer klasse

    Hallo, m�chte ado benutzen und die methode Execute() in meiner eigenen Klasse verwenden, allerdings kommt bei mir nur folgende Fehlermeldung:

    Fatal error: Call to a member function Execute() on a non-object in ... on line 153

    Hier ein Beispiel code wie ich es gemacht hab:


    Hier wird nur included
    Code:
    // dependence.inc.php
    
    require_once($strRootpath.'includes/database.inc.php');
    require_once($strRootpath.'lib/class1.php');

    Hier wird verbunden
    Code:
    // database.inc.php
    
    require_once($strRootpath.'core/database/adodb.inc.php');
    
    switch($arrSystem['dbType']) {
    
    // mysql support
    case 'mysql':
    	if($intDbPort == 3306 OR $intDbPort == '') {
    		if($booDbPersist) {
    			$strDsn = "mysql://$strDbUser:$strDbPasswd@$strDbHost/$strDbName?persist";
    		} else {
    			$strDsn = "mysql://$strDbUser:$strDbPasswd@$strDbHost/$strDbName";
    		}
    		
    		$objBase = ADONewConnection($strDsn);
    		if(!$objBase) {
    			exit("Database Error");
    
    		}
    		$objBase->debug = $arrSystem['Debug'];
    	} else {
    		$strDbHost = $strDbHost.':'.$intDbPort;
    		
    		if($booDbPersist) {
    			$strDsn = "mysql://$strDbUser:$strDbPasswd@$strDbHost/$strDbName?persist";
    		} else {
    			$strDsn = "mysql://$strDbUser:$strDbPasswd@$strDbHost/$strDbName";
    		}
    		
    		$objBase = ADONewConnection($strDsn);
    		if(!$objBase) {
    			exit("Database Error");
    		}
    		$objBase->debug = $arrSystem['Debug'];	
    	}
    	break;
    }
    Hier eine Beispiel Klasse
    Code:
    // class1.php
    
    class beispiel
    {
        public __construct()
        {
            $strSql = "SELECT * FROM ".$arrSystem['dbPrefix']."user";
            $rs = $objBase->Execute($strSql);
            return $rs;
        }
    }
    Hier eine Date aus der ich die Methoden aufrufe
    Code:
    // index.php
    $strRootpath = './';
    
    $objBeispiel = new beispiel();
    Config Daten sind alle richtig. Verbindung ist auch vorhanden.
    Würde ich aus der index.php zb.: $objBase->Execute("..."); machen funktionierts, nur nicht innerhalb einer Klasse, ob es in einer Funktion auch so ist hab ich noch net getestet.

    Weiß wer was ich da falsch mache? Danke im voraus.

  • #2
    Bei der Klasse beispiel sehe ich nicht, wo im Konstruktor das Objekt $objBase herkommt.
    Dir ist klar, dass ohne weitere Markierung nur die Variablen zwischen public __construct() { und } zur Verfügung stehen?

    PHP-Code:
    <?php
    $value 
    13;

    class 
    Foo
    {
        function 
    __construct() {
            echo 
    __METHOD__' : '$value"
    \n"
    // Notice: Undefines variable ...
        
    }
    }

    class 
    FooEx
    {
        function 
    __construct($val) {
            echo 
    __METHOD__' : '$val"
    \n"
    ;
        }
    }


    $f = new Foo;
    $fx = new FooEx($value);
    ?>

    Kommentar


    • #3
      Hmm dachte es reicht, wenn in der index mit der database.inc.php gelinkt wird, und was m�sste ich jetzt machen damit $objBase auch in der Beispiel Klasse einen Wert hat, auch per Konstruktor �bergen?

      Kommentar


      • #4
        BeitragVerfasst am: 18.12.2005, 16:02 Titel:
        Hmm dachte es reicht, wenn in der index mit der database.inc.php gelinkt wird
        Falsch gedacht. Variablen haben einen Gültigkeitsbereich; ausserhalb dessen sind sie nich sichtbar. http://www.php.net/language.variables.scope

        auch per Konstruktor übergen?
        Was meinst Du dazu? Was haben Deine Tests ergeben?
        Oder andersherum gefragt: Was meinst Du, geht bei $value aber nicht bei $objBase ?

        Kommentar


        • #5
          Ah, ok es funktioniert, danke vielmals.

          Kommentar

          Lädt...
          X