SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.06.2004, 00:36:56
Benutzerbild von NanoCyte
NanoCyte NanoCyte ist offline
Junior Member
 
Registriert seit: Nov 2003
Beiträge: 207
NanoCyte eine Nachricht über ICQ schicken
Andere Klasse aus Klasse aufrufen

ich hab eine Klasse für Datenbank und will jetzt diese Klasse aus einer anderen klasse heraus ansprechen.

Ich würde das gerne ohne global in jeder function machen und auch ohne extends. gibt es da noch andere möglichkeiten, die klasse anzusprechen, wenn ich in ner anderen klasse bin, weil einfach $db->query(" ... "); funktioniert nicht
Mit Zitat antworten
  #2  
Alt 21.06.2004, 02:09:29
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
ja, man kann klassen vererben.

PHP-Code:
<?PHP
class mutter {
    function 
muttermeckert() {
        echo 
"du bist böse";
    }

    function 
muttergibtgeld() {
        echo 
"kauf dir was";
    }
}

class 
tochter EXTENDS mutter {
    function 
verhaltenvontochter$ver ) {
        if ( 
$ver == "frech" ) {
            
$this->muttermeckert();
        } elseif ( 
$ver == "brav" ) {
            
$this->muttergibtgeld();
        }
    }
}

$obj = new tochter();
$obj->verhaltenvontochter"brav" );
?>
ist getestet:

http://www.julianmoritz.de/selfphp/class.php

siehe auch da:

http://www.dclp-faq.de/q/q-klassen-vererbung.html
Mit Zitat antworten
  #3  
Alt 21.06.2004, 02:11:53
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
achso OHNE extends *ggg*

ja, gibt es auch...du kannst die instanz der klasse einfach mitübergeben.

PHP-Code:
class neueklasse {
function 
neueklasse$instanzderaltenklasse ) {
$this->instanzderaltenklasse $instanzderaltenklasse;
}
}

$obj1 = new alteklasse();
$obj2 = new neueklasse$obj1 ); 
Mit Zitat antworten
  #4  
Alt 21.06.2004, 16:08:57
Benutzerbild von NanoCyte
NanoCyte NanoCyte ist offline
Junior Member
 
Registriert seit: Nov 2003
Beiträge: 207
NanoCyte eine Nachricht über ICQ schicken
ja, das alles weiß ich dass es geht. wäre es aber möglich, einfach mit $db->query("...") was aufzurufen, wenn ja, muss ich dafür irgendwas mit global oder so bestimmen?
ging mir nur darum, dass ich quasi "einfach mal so" aus der klasse heraus die db-klasse aufrufen kann....
wenn das so net geht, muss ich mir wohl für jede klasse ne instanz-func schreiben

edit:

okay, habs raus, wie es geht, mit kleinem umweg
PHP-Code:
class ship
        
{
        
// Andere Klasse aufrufen
        
function ship()
                {
                global 
$cdb;
                
$this->cdb $cdb;
                }
        } 
(is fast so wie das von feuervogel, thx für die idee!)

Geändert von NanoCyte (21.06.2004 um 16:43:44 Uhr)
Mit Zitat antworten
  #5  
Alt 21.06.2004, 20:11:59
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
das ist aber kein sauberer programmierstil und die wiederverwendbarkeit der klasse sinkt enorm.
Mit Zitat antworten
  #6  
Alt 21.06.2004, 21:13:12
Fuchs Fuchs ist offline
Junior Member
 
Registriert seit: Jul 2003
Beiträge: 182
Mach dich mal ueber 'Singleton' schlau. Such einfach mal im Forum od. google.
Mit Zitat antworten
  #7  
Alt 22.06.2004, 12:12:33
René_M René_M ist offline
Junior Member
 
Registriert seit: Aug 2003
Ort: Fürstenau (Uckermark, Land Brandenburg)
Beiträge: 259
Hi @all,

ich habe ebenfalls eine Frage / Problem.

Die Fehlermeldung bekomme ich durch den Aufruf der Funktion "$b_weg = $this->db_query($b_query);" aus der Classe "class user_del" heraus. Rausgefunden habe ich das es am fehlenden "$this->conn" liegt. Wenn ich aus dem Normalen PHP-Code auf die Funktion zugreife "$result = $db->db_query($query);" funktioniert es aber nicht von der Kind-Classe in die Eltern-Classe. Weis jemand wie ich den Fehler beheben kann?

Zitat:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in E: ... db_class.php on line 67
PHP-Code:
<?php

class datenbank
{
    var 
$dbhost;
    var 
$dbuser;
    var 
$dbpass;
    var 
$dbname;
    var 
$conn;

    function 
db_conn()
    {
        
$this->conn = @mysql_connect($this->dbhost$this->dbuser$this->dbpass);

        if(!
$this->conn)
            
$this->db_error('Connect');

        
$this->sele = @mysql_select_db($this->dbname$this->conn);

        if(!
$this->sele)
            
$this->db_error('Database');

        return 
$this->conn;
    }

    function 
db_query($query)
    {
        
$this->result = @mysql_query($query$this->conn); /* line 67 */

        
if(!$this->result)
            
$this->db_error('Query');

        return 
$this->result;
    }

/* usw. */

}

$db = new datenbank;

$db->dbhost DB_HOST;
$db->dbuser DB_USER;
$db->dbpass DB_PASS;
$db->dbname DB_NAME;

$db->db_conn();

/*************************************/

class user_del extends datenbank
{
    var 
$gmt_zeit;
    var 
$user_old;
    var 
$board_old;

    function 
zu_alt()
    {
            
$b_query 'SELECT `id`, `last` FROM `' $brenam '_board`';
            
$b_weg   $this->db_query($b_query);

            
/* usw. */
    
}
}

$udel = new user_del;

$udel->gmt_zeit  $zeit;
$udel->user_old  = (86400 $del_user);
$udel->board_old = (86400 $del_board);

$udel->zu_alt();

?>
__________________
Gruß
René

lange Weile dann --> Webchess 2003

Geändert von René_M (22.06.2004 um 12:16:00 Uhr)
Mit Zitat antworten
  #8  
Alt 22.06.2004, 12:49:02
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
also, wenn du die klasse aus dem php-code aufrufst, machst du das sicher so:

$obj1 = new datenbank();
$obj1->db_connect( $diezugangsdaten );
$res = $obj1->db_query($query);

klaro, es gibt keinen fehler.

wenn du nun aber innerhalb der klasse user_del einfach nur $this->db_query( $query ); machst gibts nen fehler, klaro, weil du ja eben noch nicht zur db verbunden bist. genau das steht auch in der fehlermeldung. schreib dir für user_del mal nen konstruktor in dem zur db verbunden wird, dann dürfte das kein problem mehr sein.
Mit Zitat antworten
  #9  
Alt 22.06.2004, 13:04:08
René_M René_M ist offline
Junior Member
 
Registriert seit: Aug 2003
Ort: Fürstenau (Uckermark, Land Brandenburg)
Beiträge: 259
$db->db_conn();

Hier wird doch die Funktion zum Verbindungsaufbau aufgerufen und das noch vor dem Aufruf der Funktion in der Kind-Classe ?

OOP ist noch Neuland für mich, kleine Code-Beispiele wären fürs verstehen besser. ;-)
__________________
Gruß
René

lange Weile dann --> Webchess 2003

Geändert von René_M (22.06.2004 um 13:08:58 Uhr)
Mit Zitat antworten
  #10  
Alt 22.06.2004, 13:41:49
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
aaaalso...

um ne sql-abfrage zu machen brauchst du die verbindung zur db. das hat erst mal nix mit oop zu tun.

wenn du nun in den child-class auch ne sql-abfrage machen willst, musst du vorher eben eine verbindung zur datenbank starten.

PHP-Code:
class user_del extends datenbank

{

    var 
$gmt_zeit;

    var 
$user_old;

    var 
$board_old;

function 
user_del() {

$this->dbhost DB_HOST;

$this->dbuser DB_USER;

$this->dbpass DB_PASS;

$this->dbname DB_NAME;



$this->db_conn();

}

    function 
zu_alt()

    {

            
$b_query 'SELECT `id`, `last` FROM `' $brenam '_board`';

            
$b_weg   $this->db_query($b_query);



            
/* usw. */

    
}


Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:45:56 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt