XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   PHP OOP: Datenbankeintrag Klasse - ein paar theoretische Überlegungen (http://xhtmlforum.de/showthread.php?t=57793)

David 23.07.2009 19:34

@mantiz: Welchen Sinn haben die Namespaces in dieser Reihe? Stellen diese mehrere verwendete Datenbanken dar?

mantiz 23.07.2009 20:06

Namespaces haben einfach gruppierenden Charakter.
Verschiedene Entwickler können verschiedene Namespaces verwenden, um sich nicht in die Quere zu kommen.

Da das ganze für ein CMS ist, und ich wahrscheinlich unterschiedliche Module/Plugins/Tabellen für verschiedene Kunden benötige, kann ich so z.B. einen Namespace pro Kunden anlegen und die Dinge dort sauber kapseln.

Endgültig ist die Struktur aber noch nicht, da muss ich mir demnächst nochmal die Birne machen, jetzt muss ich mich aber erstmal um Uni und meine Template-Klasse kümmern, welche nun eine TagLib-Unterstützung erhalten soll, danach geht's dann weiter mit dem CMS. :)

David 23.07.2009 21:24

D.h. du lässt pro Namespace den Zugriff nur auf bestimmte Tabellen in der DB zu?

mantiz 23.07.2009 21:30

Grundsätzlich kann jedes Modul auf jede Tabelle zugreifen, jedoch können Zugriffsrechte auf Tabellen und/oder ganze Namespaces vergeben werden, oder was meinst Du?

Worauf willst Du hinaus? :)

// Edit:
Wenn es die Tabelle A im Namespace A gibt, dann kann man von Namespace B natürlich auch auf die Tabelle A im Namespace A zugreifen, falls Du das meinst.
Also innerhalb (eines Modules beispielsweise) des Namespace B kann ich via getTable('/A/A') darauf zugreifen.

War's das, was Du gemeint hast?

David 23.07.2009 23:47

Mein Horizont im bereich Datenmodel reicht gerade mal von ER-Modellen bis hin zu dessen Umsetzung in einer Relationalen DB - die ja im Prinzip eine Sammlung von Tabellen ist. Ich bekomm da die Namespaces nich eingeordnet. :?

Um mal in deinem Beispiel zu sprechen:
PHP-Code:

$globalNamespace->getNamespace('Core')->getTable('Artikel')->listRecords(...);
//bzw. 
$globalNamespace->getNamespace('Coat')->getTable('Artikel')->listRecords(...); 

Beide Befehle müssten ja zum selben Ergebniss führen, wenn "Artikel" eine Tabelle in der Datenbank ist und listRecords() alle Datensätze zurück gibt.

mantiz 24.07.2009 00:23

Ach, so meinst Du das. :)

Nee, das sind bei mir 2 verschiedene Tabellen, und zwar werden die Tabellen durch die Klassen auf die realen Tabellen "Core_Artikel" bzw. "Coat_Artikel" gemapt, d.h. die Queries, die ja ebenfalls automatisch generiert werden, beziehen sich auf 2 verschiedene Tabellen.

An sich ist das ganze eine völlig normale relationale Datenbank, mysql halt. :)

Dann habe ich mir ein paar Klassen geschrieben, um den Zugriff auf die Tabellen objektorientiert zu gestalten und die Queries halt nicht direkt angeben zu müssen, sondern z.B. via "listRecords", oder "updateRecord", etc.

Wenn der Zugriff auf die Tabellen aber dann so gekapselt ist, habe ich mir weiter überlegt kann man eine Instanz "höher" ansetzen und Namespaces einführen, diese sind im Prinzip nur virtuell und durch die Objekte realisiert, die Tabellen an sich sind flach, wie man es kennt, lediglich die Benennung der Tabellen lässt die Zuordnung zu Namespaces erkennen.

David 24.07.2009 01:21

Jetzt wirds. Die Namespaces sind ganz simpel ausgedrückt also eine Gruppierung einzelner Teile deines Datenmodels.

mantiz 24.07.2009 07:29

Jop. :)


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

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2021, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2020