php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-05-2007, 19:01
leiermann
 Newbie
Links : Onlinestatus : leiermann ist offline
Registriert seit: May 2007
Beiträge: 3
leiermann ist zur Zeit noch ein unbeschriebenes Blatt
Standard wie ohne $GLOBALS auf klasse zugreifen

hallo,
ich hab 2 klassen (db und error), und ich habe ganz viele plugins, die sich halt auch ändern, bzw. die halt auch von anderen geschrieben werden können sollten. das problem ist jetzt, dassalle plugins auf die mysql klasse, aber auch auf die fehlerklasse zugreifen müssen.

aber irgendwie fehlt mir ein sinnvoller lösungsansatz, bzw. mir fällt nichts besseres ein als..
im "hauptprogramm", die db und fehlerklasse einzubinden, und mit
PHP-Code:
$GLOBALS['mysqldb'] = new mysql(); 
zu "starten".

oder, ich muss die 2 klassen in der plugin-datei requiren, und starten, was aber total sinnlos wäre.

wie löst ihr solche probleme? werde da ja wohl nicht der einzigste sein. -anders könnte man vielleicht(!) noch der module-klasse, die die plugins-einfügt, und in seine klasse mit aufnimmt, die mysql-verbindung etc irgendwie übergeben. aber weiß nicht so richtig.

wie gesagt, erzählt einfach mal, wie ihr das macht. bitte aber für php4 (über sinn und unsinn von php4 müssen wir nicht diskutieren, ist vorgegeben)

falls jemand größere projekte prozedural schreibt, da ja oop in php4 noch nicht wirklich toll möglich ist, auch immer her damit. erzählt einfach mal, wie ihr sowas lösen würdet, die "wahrheit" findet sich am ende irgendwie zwischen meiner und eurer wahrheit

mfg
lm
Mit Zitat antworten
  #2 (permalink)  
Alt 02-05-2007, 11:18
DarkRoot
 Registrierter Benutzer
Links : Onlinestatus : DarkRoot ist offline
Registriert seit: May 2005
Beiträge: 44
DarkRoot ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe es ähnlich wie du gelöst, ich habe am anfang eine Datei "constructor.php", wo dann die Language, Template, DB, [...] - Klassen included und instalziert werden.
Wenn ich dann ein Modul (z.B. News) habe, hole ich die Klassen da mit globals $db, $language; rein.
Desweiteren habe ich z.B. ein "core" Modul, welches die einzelnen Ausgabemodule (hier wieder News) included und instanziert, innerhalb der Klasse (nested classes).
Wenn man das anders lösen könnte, würde mich das auch interessieren.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-05-2007, 11:50
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Da habt ihr dann wohl eher ein Designproblem.

Wenn zB Error ein DB-Objekt braucht, wird das halt bei der Instantiierung eines Error-Objektes als Parameter übergeben und als Klassenvariable eingesetzt. Plugins müssen ähnlich die Möglichkeit kriegen, darauf zuzugreifen.

global ist einfacher, aber unsinniger, denn damit umgehst du ja gerade die Datenkapselung. Eigentlich ist etwas falsch, wenn man global benutzt
Mit Zitat antworten
  #4 (permalink)  
Alt 03-05-2007, 11:54
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Singleton statt Übergabe an Parameter geht auch
Mit Zitat antworten
  #5 (permalink)  
Alt 04-05-2007, 21:50
leiermann
 Newbie
Links : Onlinestatus : leiermann ist offline
Registriert seit: May 2007
Beiträge: 3
leiermann ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, dass ich erst jetzt wieder schreibe, es gab viel zu tun.

singleton benutze ich auch zum teil, gerade dort wo nur vereinzelte funktionen auf diese klasse angewiesen sind.

@shurakai
das ist möglich, dass ich da ein designproblem habe, aber dann führe ich doch durch haufend funktionen haufend klassen mit. also ja ann auch innerhalb einer klasse. ich hab z.b. eine "start-funktion" in der core-klasse, diese lädt alle anderen klassen. nur bleibt es ja nicht bei der einen funktionen, sonder ich müsste ja das an jede folgende weitergeben, was -wie ich finde- ziemlich bekloppt wäre.

klar, datenkapselung ist fehlanzeige. den einzigste vorteil, denn man noch hat ist, dass es übersichtlicher ist, und dann z.b. eine plugin-funktion genauso heisen kann, wie eine core-funktionen. für mehr dienen die klassen bei mir nicht, ist aber natürlich nicht unbedingt sinn der sache, mit php4 aber auch blöd zu ändern. -also finde ich. was sagst du, vielleicht hab ich auch nur irgendwann mal was flasch verstanden. mache das halt nur schon seit ein paar jahren so, und hab mich jetzt mal gefragt, dass das doch eigentlich bekloppt ist.
Mit Zitat antworten
  #6 (permalink)  
Alt 04-05-2007, 23:35
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich verstehe dein Problem leider nicht...

Du kannst:

- Dem Konstruktor Objekte übergeben und diese, falls mehrfach benötigt, zB als Klassenattribute abspeichern
- An Methoden Objekte übergeben
- Objekte in den Methoden neu erzeugen
- Objekte per Singleton holen

Ist alles ganz easy, dass man denkt dass das ja nicht so schön ist, hatte ich früher auch, aber das ist schon okay so. :-)
Mit Zitat antworten
  #7 (permalink)  
Alt 05-05-2007, 17:50
leiermann
 Newbie
Links : Onlinestatus : leiermann ist offline
Registriert seit: May 2007
Beiträge: 3
leiermann ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm, hast irgendwie recht. vin irgendwie nicht auf die idee gekommen, dass ich das objekt einer klassenvariable übergeben kann. muss mal schauen, ob ich dann wirklich komplett ohne globals auskomme. danke jedenfalls
Mit Zitat antworten
  #8 (permalink)  
Alt 05-05-2007, 19:22
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: wie ohne $GLOBALS auf klasse zugreifen

Zitat:
Original geschrieben von leiermann
ich hab 2 klassen (db und error), und ich habe ganz viele plugins, die sich halt auch ändern, bzw. die halt auch von anderen geschrieben werden können sollten. das problem ist jetzt, dassalle plugins auf die mysql klasse, aber auch auf die fehlerklasse zugreifen müssen.
hi,
könntest du ja so machen. eine abstrakte klasse plugin, in der die error- und db-klasse (jeweils als singleton implementiert) als klassenvariablen gehalten werden. diese könntest du im konstruktor zuweisen.
die abstrakte methode, z.b. execute(), sollen alle plugins bereitstellen, die von plugin abgeleitet werden.
würde dann in php5 so aussehen:
PHP-Code:
abstract class plugin
{
 protected 
$db_object=null;
        
 protected 
$error_object=null;
        
 public final function 
__construct()
  {
   
// Singleton der DB- und Error-Klasse als Member zuweisen
   
$this->db_object=db::getInstance();
   
$this->error_object=error::getInstance();
  }

 
// Diese Methode sollen alle Plugins bereitstellen
 
abstract public function execute();
}


// Innerhalb dieses Plugins kann per $this->db_object auf das
// Datenbankobjekt zugegriffen werden (respektive Error)
class plugin_xyz extends plugin
 
{
  public function 
execute()
  {
   
// Hier konkrete Implementierung des Plugins
  
}

Mit Zitat antworten
Antwort

Lesezeichen


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

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:33 Uhr.