Hallo Forummer
Ich habe einige Klassen erstellt, die auch super funktionieren. Jetzt stört es mich, dass ich identischen Code mehrfach verwende. Ich hab nun versucht die Klassen auseinander zu nehmen, so dass code der vielfach identisch ist in einer Elternklasse steht und den Kindern vererbt wird. Wie im richtigen Leben gibt das erben ärger.
Das wäre meine Elternklasse mit hauptsach __constructor, __destructor, getSQL, load, delete, save, add
Kindklasse! Dabei bekomme ich den Fehler, dass die Funktion der Elternkalsse getSQL nicht auf die private Variable $ds_sql
Danke für hinweise.
Ich habe einige Klassen erstellt, die auch super funktionieren. Jetzt stört es mich, dass ich identischen Code mehrfach verwende. Ich hab nun versucht die Klassen auseinander zu nehmen, so dass code der vielfach identisch ist in einer Elternklasse steht und den Kindern vererbt wird. Wie im richtigen Leben gibt das erben ärger.
Das wäre meine Elternklasse mit hauptsach __constructor, __destructor, getSQL, load, delete, save, add
Code:
<?php class basictab { //Constructor der Klasse function __construct() { $this->objDB = GetMyConnection(); } //Destructor der Klasse function __destruct() { } //SQL zurückgeben public function getSQL() { return $this->ds_sql; } //Eigenschaften Laden public function load() { $this->ds_array = $this->ds->fetch_assoc(); foreach ($this->ds_array as $key => $value) { $this->{"cs_".$key} = $value; } } //Datensatz Löschen public function delete($del_array) { $_SESSION['String'] = "del:< br>"; $adID = $del_array[self::id_Index]; //SQL zum löschen der Adresse zusammenstellen if ($adID != 0) { $this->sql ="DELETE FROM ".self::TABLE_NAME." WHERE ".self::TABLE_NAME.".".self::id_Index." = ".$adID; $_SESSION['saveSQL'] = $this->sql; fktTestSQL($this->sql, $this->objDB); } } //Datensatz Speichern public function save($save_array, $Start_adr_Array="") { $adID = 0; $sqlup = ""; $this->sql = "UPDATE ".self::TABLE_NAME." SET "; //Kontrollvariablen $sessCount=0; $_SESSION['String'] = "save:< br>"; $_SESSION['info'] = ""; $_SESSION['ifvergleich'] = ""; $_SESSION['saveSQL'] = ""; $_SESSION['benutzerForm']=$kunden_array; foreach ($save_array as $kuvar => $value) { $_SESSION['ifvergleich'] .=$sessCount++." ". $value." != ".$this->{"cs_".$kuvar}." and ".$kuvar." != \"id\""; if (($value != $this->{"cs_".$kuvar}) and ($kuvar != "id")) { //Daten wurden verglichen und ein Speichern ist notwendig //Jetzt wird via set-function festgestellt wie die Daten gespeichert //werden soll. $this->{"set_cs_".$kuvar}($value); $_SESSION['info'] .="Set ".$kuvar.": ".$value.";< br>"; $_SESSION['String'] .= $this->{"cs_".$kuvar}; if(is_numeric($this->{"cs_".$kuvar})) { $_SESSION['String'] .= "=nein< br>"; $sqlup .= self::TABLE_NAME.".".$kuvar."=".$this->{"cs_".$kuvar}.", "; } else { $_SESSION['String'] .= "=ja< br>"; if ($this->{"cs_".$kuvar} != NULL) { $sqlup .= self::TABLE_NAME.".".$kuvar." = '".$this->{"cs_".$kuvar}."', "; $_SESSION['String'] .= $sqlup."< br>"; } else { $sqlup .= self::TABLE_NAME.".".$kuvar." = NULL, "; $_SESSION['String'] .= $sqlup."< br>"; } } } else { if ($kuvar == self::id_Index) { $adID = $value; $_SESSION['String'] .= "\ mit wert:".$value."< br>"; } } } $_SESSION['String'] .= "adID: ".$adID."< br>"; if ($adID != 0) { $_SESSION['String'] .= "SQL-Länge: ".strlen($sqlup)."< br>"; if (strlen($sqlup)!=0) { $_SESSION['String'] .= "vor dem endgültigen erstellen des SQL: ".$sqlup."< br>"; $sqlup = substr ($sqlup,0,strlen($sqlup)-2); $this->sql .= $sqlup." WHERE ".self::TABLE_NAME.".".self::id_Index."=".$adID; $_SESSION['saveSQL'] = $this->sql; fktTestSQL($this->sql, $this->objDB); return $this->objDB->insert_id; } } else { return "Update nicht möglich!"; } } //Datensatz NEU public function add($add_array) { $_SESSION['String'] = "add:< br>"; $this->sql = "INSERT INTO ".self::TABLE_NAME." "; $tabFeld = "("; $tabFeldValues = " Values ("; foreach ($add_array as $kuvar => $value) { //Alle Eigenschaften ausser den Index zusammenstellen if ($kuvar != self::id_Index) { //Feldliste für SQL erstellen $tabFeld .= "`".$kuvar."`, "; //Eingaben aus Formular mit entsprechender Set-Funktion für die Eigenschaft bereinigen $this->{"set_cs_".$kuvar}($value); //Liste der Werte für SQL Values erstellen if (is_numeric($this->{"cs_".$kuvar})) { $tabFeldValues .= $this->{"cs_".$kuvar}.", "; } else { $tabFeldValues .= "'".$this->{"cs_".$kuvar}."', "; } } } //überzähliges , abschneiden und abschliessende Klammer setzen bei Feldnamen und Werten $tabFeld = substr($tabFeld,0,strlen($tabFeld)-2).") "; $tabFeldValues = substr($tabFeldValues,0,strlen($tabFeldValues)-2).")"; //SQL fertig zusammenstellen $this->sql .= $tabFeld.$tabFeldValues; //SQL ausführen $_SESSION['saveSQL'] = $this->sql; fktTestSQL($this->sql, $this->objDB); return $this->objDB->insert_id; } } ?>
Code:
<?php require ($_SESSION['startverz'] . '/class/class_basictab.php'); class tadressen_erb extends basictab { //Konstanten definieren const TABLE_NAME = "TAdressen"; const id_Index = "Ad_id"; //Interne Klasseneigenschaften erstellen private $ds; private $ds_sql; private $ds_array; //Eigenschaften auf grund der Tabelle erstellen: private $cs_Ad_id; private $cs_HauptId; private $cs_Geschlecht; private $cs_Vorname; private $cs_Nachname; private $cs_Titel; private $cs_Firmenname; private $cs_Adresse; private $cs_Ort; private $cs_Postleitzahl; private $cs_Land; private $cs_Foto; private $cs_Frei1; private $cs_Frei2; private $cs_KundeJaNein; private $cs_HatNebenAdr; private $cs_Anschrift; private $cs_Intern; private $cs_Absender; private $cs_Sperrung; private $cs_Gruppe; private $cs_IMPDate; private $cs_Postfach; private $cs_QuikSuche; private $cs_Frei3; private $cs_Frei4; private $cs_OLGeaendert; private $cs_ACCGeaendert; private $cs_OLEntryID; private $cs_warn; private $cs_Provision; //Aus SQL Recordset zurück geben function getSQL_Rec() { return fktTestSQL($this->ds_sql, $this->objDB); } //Einzelner Datensatz holen public function getTAdressen_1($id) { $this->ds_sql = "SELECT * FROM ".self::TABLE_NAME." WHERE ".self::id_Index." = ".$id; $this->ds = fktTestSQL($this->ds_sql, $this->objDB); $this->load(); } //Auswahl Datensätze holen public function getTAdressenWhere($strWhere="") { $this->ds_sql = "SELECT * FROM ".self::TABLE_NAME; if ($strWhere !== "") { $this->ds_sql .= " WHERE "; $this->ds_sql .= $strWhere; } } //Alle Datensätze holen public function getTAdressen() { $this->ds_sql = "SELECT * FROM ".self::TABLE_NAME; return fktTestSQL($this->ds_sql, $this->objDB); } //Alle Datensätze holen public function getTAdressenWhereNNVN($strWhere="") { $this->ds_sql = "SELECT Ad_id, CONCAT(Nachname, \" \", Vorname, \"\, \", Ort) AS NNVN FROM ".self::TABLE_NAME; if ($strWhere !== "") { $this->ds_sql .= " WHERE "; $this->ds_sql .= $strWhere; } } //Get und Set Functionen erstellen function set_cs_Ad_id($value) { $this->cs_Ad_id = $this->objDB->real_escape_string($value); } function get_cs_Ad_id() { return $this->cs_Ad_id; } function set_cs_HauptId($value) { $this->cs_HauptId = $this->objDB->real_escape_string($value); } function get_cs_HauptId() { return $this->cs_HauptId; } function set_cs_Geschlecht($value) { $this->cs_Geschlecht = $this->objDB->real_escape_string($value); } function get_cs_Geschlecht() { return $this->cs_Geschlecht; } ... } ?>
Kommentar