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 03-08-2010, 17:00
PHP-Master07
 Registrierter Benutzer
Links : Onlinestatus : PHP-Master07 ist offline
Registriert seit: Nov 2007
Ort: Austria (currently US)
Beiträge: 33
PHP-Master07 ist zur Zeit noch ein unbeschriebenes Blatt
PHP-Master07 eine Nachricht über ICQ schicken PHP-Master07 eine Nachricht über AIM schicken PHP-Master07 eine Nachricht über Yahoo! schicken
Standard OOP: Objekt für alle Klassen zugänglich machen

Hallo!

Ich habe soeben ein neues Projekt starten. Alle MySQL-Abfragen werden mit Klassen gelöst. Die Sprachverwaltung/-auswahl sollte auch mit Klassen funktionieren. Ich habe jetzt folgende Struktur:

index.php:
PHP-Code:
<?php
    
include 'class.mysql.php';
    include 
'class.languages.php';
    
$db = new mysql();
    
$languages = new languages('de');
?>
class.mysql.php:
PHP-Code:
<?php
    
class mysql {
        function 
mysql() {
            
$this->connect();
        }
        function 
connect() {
            
//Verbindung zur Datenbank erstellen
        
}
        function 
query() {
            
//Abfragen zur Datenbank bearbeiten
        
}
    }
?>
class.languages.php:
PHP-Code:
<?php
    
class languages {
        function 
languages($lang) {
            
$this->set($lang);
        }
        function 
set($lang) {
            
//Sprache setzen
            
$db->query(/*query*/);
        }
        function 
test() {
            
$db->query(/*query*/);
        }
    }
?>
Die Sprachen sind alle in der Datenbank gespeichert. Gibt es eine Möglichkeit, $db global für ALLE Methoden in der Klasse zu setzen oder muss man bei jeder Methode immer 'global $db;' schreiben?
Mit Zitat antworten
  #2 (permalink)  
Alt 03-08-2010, 17:03
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Fang bloß nicht mit dem global-Scheiß an. Das ist Pfusch und bringt dich in des Teufels Küche. Also entweder mit extends arbeiten oder du legst eine Referenz an. Und bitte orientiere dich am PHP5-Standard. Di hast da noch den alten 4er-Müll.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 03-08-2010, 17:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Also entweder mit extends arbeiten
Das wäre genauso Pfusch.


Dependency Injection wäre hier m.W. ein Stichwort.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #4 (permalink)  
Alt 03-08-2010, 17:17
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Das wäre genauso Pfusch.

Dependency Injection wäre hier m.W. ein Stichwort.
Herrgott, der fängt doch gerade erst an. Gib ihm erst mal Zeit für die Basics. Die Feinheiten kommen dann später.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 03-08-2010, 17:21
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Herrgott, der fängt doch gerade erst an. Gib ihm erst mal Zeit für die Basics.
Sicher, sicher ... aber ich hatte deinen Hinweis auf extends so verstanden, dass du vorschlagen wolltest, alle Klassen von einer Datenbank-Klasse erben zu lassen(?) - und das wäre ein Holzweg, von dem man nachher nur mit hohem Aufwand wieder runter kommt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 03-08-2010, 17:24
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Dann versuche ich es mal:
1. Lass den "globals" Quatsch!
2. Besser wäre es das DB Objekt per Setter- oder Konstruktorinjektion durch zu reichen.
3. Auch eine Registry könnte eine Lösung sein
4. Fange gar nicht erst mit Singletone an, um globale Variablen zu ersetzen
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 03-08-2010, 17:28
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Gib ihm erst mal Zeit für die Basics. Die Feinheiten kommen dann später.
Das verstehe ich jetzt nicht. Genau mit diesem Argument könnte man entweder auch die Benutzung von global rechtfertigen oder es ist völlig von global und der Vererbung von Datenbankschnittstellen abzuraten.

@PHP-Master07: Informier dich lieber über MVC und benutz gängige Datenbankabstraktionsklassen wie z. B. PDO. Im Script erzeugst du dann eine PDO-Instanz und übergibst sie den Fachklassen im Konstruktor.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 03-08-2010, 17:29
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Sicher, sicher ... aber ich hatte deinen Hinweis auf extends so verstanden, dass du vorschlagen wolltest, alle Klassen von einer Datenbank-Klasse erben zu lassen(?) - und das wäre ein Holzweg, von dem man nachher nur mit hohem Aufwand wieder runter kommt.
Um Gottes Willen. So verrückt bin selbst ich nicht.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 03-08-2010, 17:31
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
... könnte man entweder auch die Benutzung von global rechtfertigen
Das sind imho Basics.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #10 (permalink)  
Alt 03-08-2010, 22:14
Benutzerbild von fab-s fab-s
 Registrierter Benutzer
Links : Onlinestatus : fab-s ist offline
Registriert seit: Aug 2010
Beiträge: 28
fab-s befindet sich auf einem aufstrebenden Ast
Standard

Ich glaube, ihr seid alle betriebsblind Der Thread-Ersteller kennt offensichtlich noch nicht einmal Properties, denn das ist das was er der Beschreibung nach sucht.

@PHP-Master07: Vergiss erstmal Begriffe wie Dependency Injection usw. und fang damit an die Basics von Objektorientierung zu verstehen, da solltest du haufenweise Material im Netz finden.

PHP spezifisch:
PHP: Eigenschaften - Manual

Und lass dir nicht erzählen du müsstest für Objekte Referenzen anlegen!
Mit Zitat antworten
  #11 (permalink)  
Alt 04-08-2010, 11:59
eintrachtemil
 Registrierter Benutzer
Links : Onlinestatus : eintrachtemil ist offline
Registriert seit: May 2004
Beiträge: 223
eintrachtemil ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So zum Beispiel auf die Schnelle:

index.php:
PHP-Code:
<?php
    
include 'class.mysql.php';
    include 
'class.languages.php';
    
$db = new mysql();
    
$languages = new languages($db'de');
?>
class.mysql.php:
PHP-Code:
<?php
    
class mysql {
        public function 
__construct() {
            
$this->connect();
        }
        public function 
connect() {
            
//Verbindung zur Datenbank erstellen
        
}
        public function 
query() {
            
//Abfragen zur Datenbank bearbeiten
        
}
    }
?>
class.languages.php:
PHP-Code:
<?php
    
class languages {
        protected 
$_lang;
        protected 
$_db;

        public function 
__construct($db$lang) {
            
$this->setDb($db);
            
$this->setLang($lang);
            
$this->init();
        }

        public function 
setDb($db){
            
$this->_db $db;        
        }

        public function 
setLang($lang) {
            
$this->_lang $lang;  
        }

        public function 
init() {
            
$this->_db->query(/*query*/);
        }

        public function 
test() {
            
$this->_db->query(/*query*/);
        }
    }
?>
__________________
Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm
Mit Zitat antworten
  #12 (permalink)  
Alt 09-08-2010, 22:17
PHP-Master07
 Registrierter Benutzer
Links : Onlinestatus : PHP-Master07 ist offline
Registriert seit: Nov 2007
Ort: Austria (currently US)
Beiträge: 33
PHP-Master07 ist zur Zeit noch ein unbeschriebenes Blatt
PHP-Master07 eine Nachricht über ICQ schicken PHP-Master07 eine Nachricht über AIM schicken PHP-Master07 eine Nachricht über Yahoo! schicken
Standard

Danke für eure nützlichen Tipps.

@fab-s: Jetzt weiß ich endlich, was ich noch lernen muss. Danke.

@eintrachtemil: Danke für die anschaulichen Beispiele! Sie haben mir sehr geholfen.
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] Klassenfunction für andere Klassen verfügbar machen eternitysoft PHP Developer Forum 4 27-12-2007 17:28
Klassen Objekt globalisiert? Morbid PHP Developer Forum 5 23-10-2006 13:11
Valides XHTML mit Flash Objekt > für alle Browser? s02 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 02-12-2004 18:50
Alle Variablen 'superglobal' oder sowas machen V 9 1 9 V PHP Developer Forum 8 13-01-2003 01:08
Button nur alle 120 Sek. anklickbar machen? CharActeR HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 07-10-2002 15:44

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:34 Uhr.