Class: DataTable

Source Location: /DataTable.php

Class Overview [line 57]


Tabelle mit Daten, im Hauptspeicher gehalten, am relationalen Datenmodell orientiert

Author(s):

  • Matthias Ansorg <matthias at ansorgs dot de>

Version:

Copyright:

Variables

Constants

Methods


Inherited Variables

Inherited Constants

Inherited Methods



Class Details

Tabelle mit Daten, im Hauptspeicher gehalten, am relationalen Datenmodell orientiert

Tags:

[ Top ]


Class Variables

$ChildRelations =

[line 568]

Kollektion aller DataRelation-Objekte, in der diese DataTable die Elternrolle hat.

get/set-Methode zu diesem Attribut: childRelations. Standardwert: null.

Tags:

  • access - private

Type: DataRelation[]

Overrides:

[ Top ]

$Columns =

[line 203]

alle Spalten dieser Tabelle in Form einer Kollektion von DataColumn-Objekten

get/set-Methode dieses Attributs: columns. Standardwert: null

Tags:

  • access - private

Type: DataColumn[]

Overrides:

[ Top ]

$Constraints =

[line 481]

alle Constraints, die dieser Tabelle zugewiesen wurden

get/set-Methode zu diesem Attribut: constraints. Standardwert: null.

Tags:

  • access - private

Type: mixed

Overrides:

[ Top ]

$DataSet =

[line 147]

Das DataSet, dem diese DataTable zugehört

get/set-Methode dieses Attributs: dataSet. Standardwert: null.

Tags:

  • access - private

Type: DataSet

Overrides:

[ Top ]

$EnforceConstraints = true

[line 443]

Wahrheitswert, der angibt, ob die Constraints dieser DataTable durchgesetzt werden

get/set-Methode zu diesem Attribut: EnforceConstraints. Standardwert: true. Die Constraints selbst sind zugreifbar über das Attribut Constraints.

Tags:

  • access - private

Type: bool

Overrides:

[ Top ]

$LoadingData = false

[line 505]

Angabe, ob gerade Daten geladen werden und deshalb auf unnötige Reaktionen zu verzichten ist

get/set-Methode dieses Attributs: loadingData. Standardwert: false.

Tags:

Type: bool

Overrides:

[ Top ]

$nullDataSet = null

[line 159]

Eine Variable mit dem Wert null.

Dieses Attribut wird nur für interne Zwecke verwendet: um »nichts« übergeben zu können, wo eine Methode eine Referenz auf ein DataSet erwartet. Denn in PHP kann nicht dort, wo eine Referenz erwartet wird, direkt null übergeben werden.

Tags:

  • access - private

Type: null

Overrides:

[ Top ]

$ParentRelations =

[line 597]

Kollektion aller DataRelation-Objekte, in der diese DataTable die Kindrolle hat.

get/set-Methode zu diesem Attribut: parentRelations

Tags:

  • access - private

Type: DataRelation[]

Overrides:

[ Top ]

$PrimaryKey =

[line 229]

der Primärschlüssel dieser DataTable (lesen, schreiben)

get/set-Methode dieses Attributs: primaryKey

Tags:

  • access - private

Type: DataColumn[]

Overrides:

[ Top ]

$Rows =

[line 261]

Kollektion aller Zeilen dieser DataTable

get/set-Methode dieses Attributs: rows. Standardwert: null.

Tags:

  • access - private

Type: DataRow[]

Overrides:

[ Top ]

$TableName =

[line 121]

Name dieser DataTable

get/set-Methode dieses Attributs: tableName. Wird durch den Konstruktor erstmals und eindeutig festgelegt.

Tags:

  • access - private

Type: string

Overrides:

[ Top ]


Class Methods

DataTable

DataTable DataTable( [string $TableName = null])

[line 67]

intitalisiert eine neue Instanz eines DataTable-Objekts

Tags:

  • access - public

Parameters:

  • string $TableName - optionaler Name, den die Tabelle haben soll. Wird er angegeben, so muss er anwendungsweit eindeutig sein. Wird er nicht angegeben, so wird im Konstruktor ein anwendungsweit eindeutiger Name generiert.

[ Top ]

BeginLoadData

void BeginLoadData( )

[line 541]

bereitet die DataTable auf das Laden von Daten vor

Diese Methode ist vor Aufrufen von LoadDataRow zu verwenden; ihr Effekt ist danach mit EndLoadData rückgängig zu machen. BeginLoadData schaltet diejenigen Teile des Objektverhaltens ab, die während des Ladevorgangs unnötig sind. Konkret ist das bisher die Durchsetzung der Constraints. In späteren Versionen mag auch dazugehören: Pflege des internen Zeilenindexes nach jedem Einfügevorgang; Auslösen von Ereignissen nach jedem Einfügevorgang. Dabei bleibt der Wert des Attributs DataSet::$EnforceConstraints unverändert, wird aber zeitweise für diese DataTable unwirksam.

Tags:

  • access - public

Parameters:

[ Top ]

childRelations

&DataRelation[] &childRelations( )

[line 584]

Kollektion aller DataRelation-Objekte, in der diese DataTable die Elternrolle hat (lesen, schreiben).

get/set-Methode des Attributs ChildRelations. Schreiben ist durch Ändern des Rückgabewertes möglich. Beachte, dass jedes DataRelation-Objekt genau zwei DataTables verbindet und deshalb zusätzlich zum Eintragen in ChildRelations zu ParentRelations genau einer anderen DataTable hinzugefügt werden muss.

Tags:

  • return - Kollektion aller DataRelation-Objekte, in der diese DataTable die Elternrolle hat.
  • access - public

Parameters:

[ Top ]

Clear

void Clear( )

[line 288]

löscht alle Daten der DataTable

Alle Zeilen dieser Tabelle werden entfernt. Das Schema der Tabelle und die Beziehungen zu anderen Tabellen bleiben jedoch erhalten. Das heißt, diese Methode ändert nichts an DataRelation-Objekten, DataColumn-Objekten oder Constraint-Objekten.

Tags:

  • access - public

Parameters:

[ Top ]

columns

&DataColumn[] &columns( )

[line 217]

alle Spalten dieser Tabelle in Form einer Kollektion von DataColumn-Objekten (lesen, schreiben).

get/set-Methode des Attributs Columns. Schreiben ist durch Ändern des Rückgabewertes möglich. Dieses Attribut ist ein numerisches Array. Die Menge aller Spalten einer DataTable nennt man ihr Schema. Es definiert die Datenstruktur der Zeilen dieser Tabelle, d.i. ihrer Datensätze.

Tags:

  • return - Kollektion aller Spalten dieser Tabelle
  • access - public

Parameters:

[ Top ]

constraints

&Constraint[] &constraints( )

[line 492]

alle Constraints, die dieser Tabelle zugewiesen wurden (lesen, schreiben)

get/set-Methode des Attributs Constraints. Schreiben geschieht durch Ändern des Rückgabewertes, er ist eine Referenz auf das interne Feld von Constraint-Objekten.

Tags:

  • access - public

Parameters:

[ Top ]

dataSet

DataSet &dataSet( [DataSet $DataSet = 0])

[line 186]

das DataSet, dem diese DataTable zugehört (lesen, schreiben)

get/set-Methode des Attributs $DataSet. Zugriff auf die set-Methode nur von Instanzen der Klasse DataSet. Leider kann friend-Semantik nicht in PHP4-Syntax ausgedrückt werden.

Eine DataTable kann unabhängig existieren: dann liefert diese Methode den Wert null. Eine DataTable kann aber auch Bestandteil genau eines DataSets sein. Dann liefert diese Methode dieses DataSet.

Tags:

  • return - das DataSet, dem diese DataTable zugehört.
  • todo - Es ist nicht möglich, eine DataTable, die einem DataSet zugehört, wieder unabhängig zu machen. Denn wenn null als Argument übergeben wird (genauer: eine Referenz auf eine Variable, die den wert null hat), so wird das so interpretiert, dass die Methode nur als get-Methode eingesetzt wird.
  • access - public

Parameters:

  • DataSet $DataSet - Referenz auf das DataSet, dem diese DataTable von nun an zugehören soll. Um diese DataTable wieder unabhängig zu machen, übergebe man null. Optionales Argument, wird nur beim Einsatz dieser Methode als set-Methode gebraucht. Weil dieses Argument mit Standardwerten arbeitet und eine Verwendung von Referenzparametern zusammen mit Standardwerten unmöglich ist, muss der Aufrufer selbst das Referenzzeichen an den übergebenen Parameter anfügen statt dass dies von der Methodenschnittstelle übernommen wird.

[ Top ]

EndLoadData

void EndLoadData( )

[line 555]

bereitet das Laden von Daten in die DataTable nach

Der Effekt von BeginLoadData wird umgekehrt, mehr nicht. Konkret: Die Constraints dieser DataTable im Attribut Constraints werden nicht mehr grundsätzlich vernachlässigt, sondern das Attribut DataSet::$EnforceConstraints ist für diese DataTable wieder wirksam und bestimmt, ob Constraints durchgesetzt werden.

Tags:

  • access - public

Parameters:

[ Top ]

enforceConstraints

bool enforceConstraints( [bool $EnforceConstraints = null])

[line 467]

Angabe, ob die Constraints dieser DataTable durchgesetzt werden (lesen, schreiben)

get/set-Methode zum Attribut EnforceConstraints. Das Attribut gibt an, ob grundsätzlich durchgesetzt werden. Es gilt jedoch nicht für den Bereich zwischen BeginLoadData und EndLoadData; in diesem Bereich werden Constraints grundsätzlich nicht durchgesetzt, auch wenn EnforceConstraints==true. Der Standardwert dieses Attributs ist true.

Diese Methode inkl. dem Attribut EnforceConstraints wird erst in einer Version nach 1.0 wirkungsvoll.

Zugriff nur private und für Klasse DataSet. Leider kann friend-Semantik nicht in PHP4-Syntax ausgedrückt werden.

Tags:

  • return - aktuelle Angabe, ob die Constraints durchgesetzt werden (true) oder unberücksichtigt bleiben (false).
  • access - private

Parameters:

  • bool $EnforceConstraints - true, um die Constraints durchzusetzen, false um sie unberücksichtigt zu lassen. Optionaler Parameter, nur bei Verwendung als set-Methode benötigt.

[ Top ]

ImportRow

void ImportRow( DataRow $DataRow)

[line 305]

Kopiert ein DataRow-Objekt in diese DataTable, sein Zustand bleibt erhalten

Das übergebene DataRow-Objekt wird an die DataRow-Kollektion dieser DataTable angehängt. Dabei werden keine Constraints berücksichtigt, diese Methode garantiert auch keine eindeutigen Primärschlüsselwerte in als Nachbedingung. Das kopierte DataRow-Objekt hat denselben Zustand wie das ursprüngliche: alle Eigenschaften und Werte haben denselben Wert.

Tags:

  • access - public

Parameters:

[ Top ]

LoadDataRow

DataRow &LoadDataRow( mixed[] $values)

[line 345]

sucht und aktualisiert eine spezifizierte Zeile

Die im Attribut PrimaryKey als Primärschlüssel festgelegten Spalten der übergebenen Werte werden untersucht. Existiert in der DataTable eine Zeile mit diesen Primärschlüsselwerten, so wird sie aktualisiert und null wird zurückgegeben. Existiert noch keine solche Zeile, so wird sie in der DataTable erzeugt und gleichzeitig eine Referenz darauf zurückgegeben.

Tags:

  • return - Wenn eine Zeile aktualisiert wurde: null. Wenn eine neue Zeile erzeugt wurde: eine Referenz auf die neue Zeile.
  • todo - Exception-Behandlung entsprechend dem .NET-Vorbild dieser Methode implementieren (nach Version 1.0). Dabei sind folgende vier Exceptions unter jeweils spezifischen Voraussetzungen zu implementieren:
    • ArgumentException: wenn das übergebene Feld mehr Werte als diese Tabelle Spalten hat. Kann bereits jetzt implementiert werden.
    • InvalidCastException: wenn ein oder mehr Werte des übergeben Feldes einen Typ haben, der nicht zum Typ der entsprechenden Column passt. Dazu muss zuerst ein System eingeführt werden, um Typsicherheit in PHP4 zu simulieren.
    • ConstraintException: wenn das Hinzufügen der DataRow eine Constraint verletzt. Wird zusammen mit der Klasse Constraint implementiert.
    • NoNullAllowedException: wenn ein null-Wert in einer Spalte eingefügt würde, die keine null-Werte erlaubt. Dazu mus zuerst das Attribut AllowDBNull in Klasse DataColumn implementiert werden.
  • access - public

Parameters:

  • mixed[] $values - Feld der Werte, die in die betreffende Zeile geladen werden sollen. Die Reihenfolge der Werte muss der Reihenfolge der Spalten in Columns entsprechen, ebenso die Anzahl der Werte. Für SQL-NULL ist null anzugeben. Hat eine Spalte einen Standardwert und soll er verwendet werden, so ist ebenfalls null anzugeben.

[ Top ]

loadingData

bool loadingData( [bool $LoadingData = null])

[line 521]

Angabe, ob gerade Daten geladen werden und deshalb auf unnötige Reaktionen zu verzichten ist (lesen, schreiben).

get/set-Methode des Attributs LoadingData. Nur zur Verwendung innerhalb der Klasse DataTable gedacht.

Tags:

  • return - Angabe, ob gerade Daten in diese DataTable eingelesen werden (true) oder nicht (false).
  • access - private

Parameters:

  • bool $LoadingData - Angabe, ob nun Daten in diese DataTable eingelesen werden sollen (true) oder ob der Einlesevorgang beendet wurde (false). Optional, nur bei Verwendung als set-Methode benötigt.

[ Top ]

NewRow

&DataRow &NewRow( )

[line 402]

erzeugt eine neue DataRow entsprechend dem Schema dieser Tabelle jedoch ohne Werte

Die erzeugte DataRow wird nicht automatisch zur DataTable hinzugefügt. Die DataRow ist unabhängig, weshalb auch ihr Attribut Table noch den Wert null hat. Falls gewünscht, muss die DataRow anschließend manuell zur Kollektion Rows einer DataTable hinzugefügt werden. Alternativ kann mit LoadDataRow eine DataRow in einem Schritt erzeugt und zur DataTable hinzugefügt werden.

Um die erzeugte DataRow mit Werten zu füllen verwende man DataRow::item() oder DataRow::itemArray().

Tags:

  • return - die neu erzeugte DataRow
  • access - public

Parameters:

[ Top ]

parentRelations

&DataRelation[] &parentRelations( )

[line 613]

Kollektion aller DataRelation-Objekte, in der diese DataTable die Kindrolle hat (lesen, schreiben).

get/set-Methode des Attributs ParentRelations. Schreiben ist durch Ändern des Rückgabewertes möglich. Standardwert: null. Beachte, dass jedes DataRelation-Objekt genau zwei DataTables verbindet und deshalb zusätzlich zum Eintragen in ParentRelations zu ChildRelations genau einer anderen DataTable hinzugefügt werden muss.

Tags:

  • return - Kollektion aller DataRelation-Objekte, in der diese DataTable die Kindrolle hat.
  • access - public

Parameters:

[ Top ]

presetObjCounter

mixed presetObjCounter( mixed $newPresetValue)

[line 106]

Klassenweiter Startwert für einen Zähler, der zur Generierung eindeutiger Namen für DataTable-Objekte im Konstruktor verwendet wird.

Der Startwert wird beim nächsten Aufruf von DataTable::DataTable() ausgewertet und dabei gleichzeitig gelöscht, so dass folgende Aufrufe von DataTable::DataTable() beim aktuellen Zählerstand und nicht wieder bei diesem Startwert beginnen. Löschen bedeutet, dass dieser Startwert auf null gesetzt wird.

Zugriff eigentlich friend, erlaubt auch für DataTableTest. Gedacht ist diese Methode dazu, in Tests auch statische Variablen direkt setzen zu können, um so ihre aktuellen Werte zu kennen und sinnvolle Annahmen über zukünftige Werte in den Tests machen zu können.

Tags:

  • return - bisheriger Wert des Startwertes. Es kann ein Integer sein oder null. Der letzte Fall bedeutet, dass der Startwert nicht gesetzt ist.
  • access - private

Parameters:

  • mixed $newPresetValue - neuer Wert, den der Startwert annehmen soll. Es kann ein Integer oder null übergeben werden. Letzteres bedeutet ein Löschen des Startwertes.

[ Top ]

primaryKey

DataColumn[] primaryKey( [DataColumn[] $PrimaryKey = null])

[line 246]

Primärschlüssel dieser DataTable (lesen, schreiben)

get/set-Methode des Attributs PrimaryKey. Standardwert: null. Weil der Primärschlüssel auch aus mehr als einer DataColumn bestehen kann, wird er durch ein Feld von DataColums dargestellt.

Tags:

  • return - aktueller Wert des Primärschlüssels. Die Elemente des Feldes sind Referenzen auf DataColumn-Objekte des Attributs Columns.
  • access - public

Parameters:

  • DataColumn[] $PrimaryKey - Spalten, die den neuen Primärschlüssel bilden sollen. Zu übergeben als Feld von Referenzen auf DataColumn-Objekte, die im Attribut Columns enthalten sind. Parameter ist optional und wird nur beim Einsatz als set-Methode benötigt.

[ Top ]

Reset

void Reset( )

[line 422]

setzt diese DataTable in den Zustand nach Konstruktoraufruf zurück

Wie bei Clear werden alle Daten gelöscht, darüber hinaus jedoch auch alle Änderungen am Schema (DataColumn-Objekte), den Beziehungen der Tabellen (DataRelation-Objekte) und den Constraints (Constraint-Objekte), die nach Ende des Konstruktoraufrufs gemacht wurden.

Diese Methode ist hauptsächlich bei der Verwendung von typisierten DataSets wertvoll. Dabei repräsetiert jede selbst abgeleitete Unterklasse von DataTable einen Typ einer Tabelle, mit spezifischem Schema, spezifischen Beziehungen und Constraints. Diese werden durch den Konstruktor erzeugt und durch eine überschriebene Version dieser Methode wiederhergestellt.

Tags:

  • access - public

Parameters:

[ Top ]

rows

&DataRow[] &rows( )

[line 275]

Kollektion aller Zeilen, die zu dieser DataTable gehören (lesen, schreiben)

get/set-Methode des Attributs Rows. Schreiben ist durch Änderung des Rückgabewertes möglich, er ist eine Referenz. Dieses Attribut ist dabei als numerisch indiziertes PHP-Array zu behandeln, Spalten werden also z.B. hinzugefügt durch $myRows[] = $newDataRow. DataRows müssen vor dem Hinzufügen mit NewRow erzeugt werden.

Tags:

  • return - Kollektion aller Zeilen, die zu dieser DataTable gehören
  • access - public

Parameters:

[ Top ]

tableName

string tableName( [string $TableName = null])

[line 132]

Name der DataTable (lesen, schreiben)

get/set-Methode des Attributs TableName.

Tags:

  • return - aktueller Name der DataTable
  • access - public

Parameters:

  • string $TableName - Wert, auf den der Name der DataTable gesetzt werden soll. Optional.

[ Top ]


Class Methods


Documentation generated on Tue, 27 Jul 2004 21:15:39 +0200 by phpDocumentor 1.3.0RC3