Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Webzeugs ::  PHP-ORM (MySQL)  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Patrick_C64
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.02.2011
Beiträge: 52
Beitrag Patrick_C64 Mitglied 20:44:17 26.04.2012   Titel:   PHP-ORM (MySQL)            Zitieren

Warum PHP-ORM?

Für kleine Projekte oder Scripte wie Highscore, Gästebuch, Adressverwaltung etc. sind Intefaces wie Doctrine und andere ähnlich umfangreiche ORM Interfaces vllt. zu überladen, in diesem Fall reicht auch ein leichtgewichtiges Interface wie PHP-ORM. Für komplexe Projekte ist dieses aber auch produktiv im Einsatz, z.B. in einem CMS.


Für welches ORM man sich nun letzlich Enscheidet, liegt an den Anforderungen an das Ergebnis und ist auch ein wenig Geschmackssache. Da trotz des kleinen Befehlssatz die wichtigsten Funkionalitäten die das gezielte speichern und bearbeiten von persistenten Daten in ein MySQL DBMS ermöglichen über einen sehr einfachen Befehlssatz abgedeckt sind.


Doctrine und Co. sind Komplex und haben einen großen Funktionsumfang.

PHP-ORM ist leichtgewichtig, und mit wenigen Funktionsaufrufen sind die Verbindungen zu einem DBMS hergestellt, Tabellen und Datenbanken bereitgestellt als auch die Speicherung und Verarbeitung von Daten möglich.

Beziehungen werde im Moment noch durch Referenzen auf den jeweiligen PRIMARY KEY abgebildet dafür wird der datentyp des PRIMARY KEY als Datentyp des Attributs genutzt, dies wird später noch Erweitert und wird dann automatisiert durch die Assoziation mit der jeweiligen Tabelle und deren PRIMARY KEY generiert. Dafür wird dann in der Klassendeklaration der Tabellen bzw. Klassenname angegeben.

Einsatzgebiete für das Interface

Php basierte Projekte in der die Speicherung der Daten in einem MySQL DBMS stattfinden soll.

Php basierte Projekte die mit wenig Planungsaufwand schnell Umgesetzt werden sollen.

Für Prototypen in der noch keine genaue Struktur der resultierenden Tabellen geplant werden kann.

Zeitdruck, nicht absehbare Änderungen, Änderungswünsche durch einen Kunden oder
zukünftig geplante Änderungen oder Erweiterungen deren Berücksichtigung zum
Zeitpunkt der ersten Implementierung oder im Rahmen derer nicht benötigt werden.

In Projekten wo andere ORM Interfaces zu überladen sind oder deren Einarbeitungszeit
zu Zeitaufwendig ist, da schnell Ergebnisse erforderlich sind.

Die Features im Überblick

Einfaches Einbinden in ein Projekt

Es muss lediglich das Verzeichnis „phporm“, in welchem sich die Includedateien und die Klassen der Schnittstelle befinden, dem Projekt beigefügt.
Anschließend wird das Interface über eine Includedatei „phporm.php“ in das Projekt Includiert.

Einfache Beschreibung von Tabellen als Klassen angelehnt an das OO Konzept von Php.

Die Beschreibung der Tabellen bzw. Klassen wird über einen String realisiert. Es stehen drei Klassentypen gängiger OO Konzepte zur Verfügung.

Standard-, Abstrakte- und Erweiterte Klassen gängiger OO Konzepte.

Es werden die Klassentypen, Standard- , Abstract, und Extends abstrahiert.
Diese stehen auch in der OO Implementierung seitens Php zur Verfügung.
Womit dessen Funktionsweise bekannt ist und keiner Erneuten Einarbeitung bedarf.

Einfaches modifizieren von Attributparametern. Beziehungen durch Klassenbeschreibung.

Das setzen von Parametern wie Primary Key, Unique, Not Null, und weiteren erfolgt nicht aufwendig über einzelne Funktionen.
Dies findet bei der Deklaration (Beschreibung) der Tabelle als Attributparameter statt.

Änderungen der Attributparameter durch Modifikation der Klassenbeschreibung.

Bei Änderungen des Datentyps oder anderer Attributparameter in der Beschreibung der Klasse, werden
diese in jeweils abstrahierten Tabelle synchronisiert.
Änderungen an den Namen der Felder Erzeugen Neue Felder!

Einfaches löschen und hinzufügen von Attributen.

Wird in der Klassendeklaration ein Parameter hinzugefügt oder weggelassen, wird
dieser aus der Tabelle gelöscht oder dieser hinzugefügt.

100 % OO Zugriff auf Datensätze, inkl. Automatisierter Datensynchronisation.

Der Zugriff auf einzelne Datensätze erfolgt wie der Zugriff auf Objekte des Php OO Konzeptes.
Änderungen an Attributwerten werden 1:1 in der Referenzierten Tabelle synchronisiert.

(Dies wird in einer späteren Version Optional sein, so dass ein Schreiben der Objekte in die Datenbank nicht automatisiert sondern auch manuell stattfinden kann.)

Datensätze nach bestimmten Kriterien aus der Datenbank lesen und als Objekte zur Verfügung stellen oder löschen.

Durch die ORM Klassen werden Funktionen zur Verfügung gestellt um einzelne oder mehrere Datensätze als
Objekte an das Script zu übergeben, oder zu löschen.

Kurze Einarbeitungszeit da sehr einfache Verbindung und Kommunikation durch wenige Funktionen zu einem MySQL DBMS.

Zugriff auf die Funktionalität wird durch 3 einfache Klassen und deren öffentlichen statischen Funktionen oder Methoden realisiert.
Für das abstrahieren oder löschen von einzelnen oder mehreren Objekten nach bestimmten Kriterien Verbindung
zum DBMS lediglich für das jeweilige Vorhaben ein Befehlsaufruf nötig.

Wenige Include Dateien, kleine Größe.

Kurze Ladezeiten, schneller Upload. Geringer Einarbeitungsaufwand

Updates vorgesehen.

So mal schnell ein kleines "Pseudo" Beispiel erstellt. Welches den minimalen Aufwand demonstrieren soll, der mit PHP-ORM einhergeht.

Jeder der mal MySQL Statements benutzt hat, kann erahnen welchen Aufwand diese im folgenden Codeauschnitt mit sich bringen würden, genau wie wenn man Tabellen an sich geänderte Anforderungen Anpassen will, spart man mit PHP-ORM sehr viel Schreib- und Anpassungsarbeit und somit Zeit, was auch die Wartung von Programmcode erheblich vereinfacht.

Downloadpage

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
 
require_once ("phporm/phporm.php");
 
  // ein DBC erstellen mit den verbindungsdaten zum DBMS
  $DBC = new DBC("127.0.0.1", "benutzer", "password");
 
 
  // zum DBMS verbinden oder script abrechen (eine fehlerausgabe
  // kann natürlich implementiert werden)
  If(!$DBC->Connect())
  exit();
 
  // datenbank bestimmen, wenn diese noch nicht
  // existiert wird diese erstellt
  $DBC->DatabaseSet ('testDB');
 
  // der klasse ORMC den erstellten DBC übergeben
  // als target für die zu erstellenden Klassen (bzw. Tabellen)
  ORMC::SetDBC ($DBC);
 
  // abstrakte orm klasse 'stdID' beschreiben
  $CDS = " stdID abstract{
    ID bigint ainc pkey;
  }"
;
 
  // abstrakte klasse wird nur im interface benötigt
  // eine referenzierung ist nicht nötig
  new ORMC ($CDS);
 
 
  // orm klasse 'user' beschreiben
  // spätere änderungen an den datentypen oder parametern
  // der attribute werden in die datenbank
  // geschrieben. attribute werden durch ihren namen
  // identifiziert eine änderung dessen zieht eine löschung
  // und/oder ein hinzufügen der betroffenen attribute nach sich.
  $CDS = " user extends stdID{
    firstname char(255);
    lastname  char(255);
    bday      date;
  }"
;
 
  // orm klasse 'user' registrieren
  $ormCUser = new ORMC ($CDS);
 
 
  // orm klasse 'groups' beschreiben (wird hier im beispiel nicht
  // benuzt, dient lediglich der darstellung)
  $CDS = " groups extends stdID{
    name char(255);
  }"
;
  // orm klasse 'member' registrieren
  $ormCGroup = new ORMC ($CDS);
 
  // orm klasse 'member' beschreiben (wird hier im beispiel nicht
  // benuzt, dient lediglich der Darstellung)
  //
  // fremdschlüssel und beziehungen werden noch automatisiert erstellt.
  // wenn eine klasse als datentyp angegeben wird, dies
  // wird in einem späteren update implementiert
  // welches dann lediglich änderungen an den CDS's nach sich
  // zieht wenn beziehungen in diesem sinn benötigt werden!
   $CDS = " member {     groupID bigint;
                          userID bigint;
  }"
;
 
  // orm klasse 'member' registrieren
  $ormCMember = new ORMC ($CDS);
 
 
  $newUser = $ormCUser->NewObject();
  $newUser->firstname ="Peter";
  $newUser->lastname  ="Lustig";
 
  $newUser = $ormCUser->NewObject();
  $newUser->firstname ="Hans";
  $newUser->lastname  ="Pusteblume";
 
 
  $userlist = array();
 
 
  // alle user aus der datenbank holen mit dem vornamen Hans
  $userliste = $ormCUser->GetObjects(array("firstname"=>"Hans"));
 
  // alle user in der datenbank löschen mit dem vornamen Hans
  $userliste = $ormCUser->DeleteObjects(array("firstname"=>"Hans"));
 
  // es können weitere kriterien bestimmt werden
  // wie begin und anzahl, und sortierung ab oder aufsteigend,
  // diese methoden stehen auch als methoden für den zugriff auf ein
  // einzelnes objekt zur verfügung und benötigen logischerweise
  // keine quantitätsmodifikatoren und sortierkriterien als parameter.
  //
  // das wars auch schon um den funktionsumfang anhand von ein wenig
  // source aufzuführen.
  //
  // damit steht zur einfachen speicherung, verarbeitung und ausgabe
  // von persistenten Daten die in einem MySQL datenbanksystem
  // vorliegen ein einfacher Befehlsatz und somit nützliches werkzeug
  // zu verfügung.
 
?>


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<?php
 
  /* Kleines Gästebuch PHP-ORM Sample
   * -------------------------------------------------------------
   *
   *  - der erste erstellte benutzer kann alle beiträge löschen
   * - es kann als gast oder benutzer ein Eintrag verfasst werden
   * - ein gast kann sich registrieren
   * - will man einen beitrag als benutzer senden muss name und
   *   passwort angegeben werden
   * - wird kein name angegeben ist der beittag ein gastbeitrag
  */

 
  // phporm inkludieren
  require_once ("phporm/phporm.php");
 
  // databaseconnector erstellen für die verbindung zum
  // datenbankserver
  $DBC = new DBC ("localhost","USER","PASSWORT");
 
  // databaseconnector verbinden
  if(!$DBC->Connect()) {
   echo ("Database Connection Error");
   exit;
  }
 
  // datenbank festlegen
  $DBC->DatabaseSet ("orm_testdb");
  // tabellenprefix festlegen
  $DBC->PrefixSet("guestbook_");
 
 
  // OMRC den databaseconnector $DBC übergeben
  ORMC::SetDBC($DBC);
 
 
  // abstrakte klasse für eine standard identifikation
  // beschreiben, attribut ID mit datentyp
  // bigint uhd primary key sowie autoincrement setzen
  $CDS = " stdID abstract{ID bigint ainc pkey;}";
 
  // $CDS für orm klasse stdID an den ORMC constructor übergeben
  // referenze wird nicht benötigt da für abstrakte klassen
  // keine tabelle angelegt wird
  new ORMC($CDS);
 
 
  // orm klasse benutzer beschreiben
  // durch die abstrakte klasse stdID erweitern, so das ein
  // primary key mit der eigenschaft autoincrement
  // des datentyps bigint zur verfügung steht
  $CDS = " benutzer extends stdID { name char(255);
                                   pass char(255);
                                 }"
;
 
 
 
  // die orm klasse benutzer wird aus dem beschriebenen
  // $CDS generiert und als instanz $CBenutzer der Klasse ORMC zurückgegeben
  $CBenutzer = new ORMC ($CDS);
 
  // orm klasse eintrag beschreiben
  // durch die abstrakte klasse stdID erweitern, so das ein
  // primary key mit der eigenschaft autoincrement
  // des datentyps bigint zur verfügung steht
  // für die Beziehung
  // benutzer : eintrag benutzer (1:n) wird über das
  // feld benutzer realisiert, in einem späterem update
  // kann der datantyp weggelassen werden oder der name
  // der assozierten tabelle bzw. klasse angegeben werden
  $CDS = " eintrag extends stdID { benutzer bigint;
                                  title char(255);
                                  text  char(1023);
                                  zeitstempel timestamp;
                                }"
;
 
  // die orm klasse eintrag wird aus dem beschriebenen
  // $CDS generiert und als instanz $CEintrag der klasse ORMC zurückgegeben
  $CEintrag = new ORMC ($CDS);
 
  // das waren die vorbereitungen um die benötigten datenstrukuren zu beschreiben
 
 
 
  // html specifisch, eingabemaske zur interaktion
  // bedarf keiner weiteren kommentierung
  echo '<form action="" method="get">';
  echo '<input type="input" name="name"></input> Benutzer<br>';
  echo '<input type="password" name="pass"></input> Passwort<br>';
 
  echo '<br><input type="input" name="title"></input> Title<br>';
  echo '<textarea type="input" name="textbox" value="text"></textarea> Beitrag<br>';
 
  echo '<br><input type="submit" value="beitrag absenden" name="submit"></input>';
  echo '<input type="submit" value="registrieren" name="reg"></input> ';
  echo '<input type="submit" value="entferne alle" name="deleteall"></input> ';
  echo '<input type="submit" value="entferne eigene" name="deleteown"></input> ';
  echo '</form><hr>';
 
 
  // wenn etwas gesendet wurde, hier findet die verarbeitung statt
  if (isset ($_REQUEST)) {
 
  // $benutzer und $eintrag definieren.
  $benutzer = null;
  $eintrag  = null;
 
  // $name und $pass definieren.
  $name =  "";
  $pass =  "";
 
   // prüfe ob name und password angegeben wurden
   if (isset($_REQUEST['name'])  )
   if (trim ($_REQUEST['name'])  ) {
 
     // request in variable einlesen
     $name =  $_REQUEST['name'];
 
     // request in variable einlesen
     if (isset($_REQUEST['pass']))
     $pass =  $_REQUEST['pass'];
 
     // wenn registrieren angefordert wurde dann erstelle einen neuen
     // benutzer mit dem namen und dem Password, wenn dieser
     // noch nicht existiert
     if(isset($_REQUEST['reg']) && $name && $pass) {
 
       // prüfen ob ein benutzer mit dem namen $name bereits vorhanden
       // ist, wenn nicht wird dieser erstellt
       if(!$CBenutzer->ExistObject (array("name"=>$name))) {
 
 
       // neues object (datensatz) erstellen
       $benutzer = $CBenutzer -> NewObject ();
 
       // attribute werden gesetzt und automatisch in die datenbank
       // synchronisiert
       $benutzer->name = $name;
       $benutzer->pass = $pass;
 
        // status ausgaben
        echo "Benutzer '".$name."' Erfolgreich Registriert!<br>";
       }else
        echo "Benutzer Existiert bereits!<br>";
 
     }else // name wurde eingegeben aber keine registrierung angefordert
           // hole benutzer mit name = $name und pass $=pass aus der datenbank
           // ist dieser nicht vorhanden ist benutzer false!
           $benutzer = $CBenutzer -> GetObject (array ( "name" => $name, "pass" => $pass ));
    }
 
 
      // wenn in der textbox text eingegeben wurde dann
      // erstelle einen neuen beitrag
      if (isset($_REQUEST['submit']))
      if (trim($_REQUEST['textbox']))
      if ( ($name && $benutzer) || !$name ) {
 
        echo "Ihr neuer Eintrag <br>";
        // hier wird der neue Eintrag erstellt
        $eintrag       = $CEintrag->NewObject();
        // der text aus der textbox wird per set übergeben
        // und steht nun auch in der Datenbank
        $eintrag->text  = $_REQUEST['textbox'];
        $eintrag->title = $_REQUEST['title'];
 
        // setze die ID des benutzers auf das attribut benutzer
        // des objectes $eintrag, damit ist eine Beziehung
        // zwischen $CEintrag und $CBenutzer hergestellt
        if ($benutzer)$eintrag->benutzer = $benutzer->ID;
 
       }else // statusausgabe
       echo "Benutzer nicht vorhanden oder Passwort falsch!<br>";
 
 
    // prüfe ob löschen angefordert wurde
 
    // alle löschen, prüfe berechtigung anhand der benutzer'ID' = 1
    if (isset($_REQUEST['deleteall'])) {
         if ($benutzer && $benutzer->ID == 1 )
           $CEintrag->DeleteObjects();
           else
           echo "keine brechtigung!<br>";
    }
 
    // sollen eigene einträge gelöscht werden, prüfe den benutzer
    // ist dieser vorhanden lösche die einträge dessen
    // attribut "benutzer" identisch mit dem Attribut ID des
    // benuztzers identisch ist
    if (isset($_REQUEST['deleteown'])) {
         if ($benutzer)
           $CEintrag->DeleteObjects(array("benutzer"=>$benutzer->ID));
           else
           echo "keine brechtigung!<br>";
    }
  }
 
  // alle einträge in ein assoziatives array lesen
  // nach ID sortiert absteigend.
  $Liste = $CEintrag->GetObjects(null,array("ID"=>"DESC"));
 
  if($Liste)
  foreach ($Liste as $eintrag) {
 
    $name = "GAST";
 
    $benutzer = null;
    // prüfen ob der eintrag einem Benutzer angehört
    // und diesen aus der Datenbank lesen um den namen des benutzers
    // im eintrag anzeigen zu können.
    if($eintrag->benutzer)
    $benutzer = $CBenutzer->GetObject(array("ID"=>$eintrag->benutzer) );
 
    // wurde ein benutzer gefunden packe den namen in die variable $name))
    if($benutzer)
    $name=$benutzer->name;
 
    // ausgabe des beitrages
    echo "<u>".$eintrag->title."</u> von ".$name." am ".$eintrag->zeitstempel."<br>".$eintrag->text."</p>";
  }
?>


Downloadpage

[edit]

Neben dem Scenario des Abschlussprojektes, sollte das interfas als kleines leichtgewichtiges schnell zu erlernendes MySQL ORM Interface für Php gesehen werden. Welches weder den Funktionsumfang noch die Komplexität wie Doctrine und Konsorten mit sich bringt, dadurch aber schnell und mit wenigen Aufwand zu Ergebnissen führt wenn es um Php, persistente Daten, und MySQL geht!

[/edit]

EDIT: - unrelevante teile gelöscht! -

Viel Spass damit und Danke für euer Interesse!

mfg. Patrick


Zuletzt bearbeitet von Patrick_C64 am 21:41:57 06.06.2012, insgesamt 21-mal bearbeitet
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 1359
Beitrag Mechanics Mitglied 21:07:06 26.04.2012   Titel:              Zitieren

Es ist PHP also ist es Open Source, oder wie willst du den Source verstecken?

Mei, was soll ich sagen. Die Doku ist sehr hölzern geschrieben und strotzt vor Fehlern. Das Framework macht aus meiner Sicht wenig Sinn. Zum einen ist es sehr schlecht, wenn ein ORM Framework nur ein DBMS unterstützt. Zum anderen schaut es irgendwie umständlich aus und kann nichts. Warum sollte man Klassen in einem String beschreiben? Was ist mit Beziehungen zwischen Objekten? Ich habe nichts dergleichen in der Doku gefunden. Ohne ist es ja eigentlich völlig wertlos. Dann noch solche Sachen wie Caching, Lazy Loading etc... Also, kann man aus meiner Sicht komplett vergessen, erst recht wo es etliche wesentlich besser Frameworks gibt.
Patrick_C64
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.02.2011
Beiträge: 52
Beitrag Patrick_C64 Mitglied 21:19:45 26.04.2012   Titel:              Zitieren

Es ist ein FI/AE Abschlussprojekt und keine Diplomarbeit!

Also mein Kentnisstand das nur weil der Source offen liegt dieser auch gleich einer Open Source Lizenz unterliegen muss oder sollte ist da anders, gut ich kann mich da auch täuschen.

Ansonsten werde ich deine Kritikpunkte was die Doku angeht berücksichtigen, wie gesagt da sind noch einige Fehler drinne, ich habe vorhin selber noch ein Paar gefunden.

Beziehungen in Form von Foreign Keys kann ich erst im nächsten update Berücksichtigen und waren nicht Bestandteil des geplanten Projektumfanges.

Diese sind aber im Handumdrehen Implementiert, die Klasse im String beschreiben hmmm, mir viel auf die schnelle keine andere Lösung ein, nach Klassen zur Laufzeit generieren habe ich mich noch nicht informiert, und die Lösung als solche klappt ganz gut!

Ohne Beziehungen zwischen Objekten, wenn du meinst das man Beziehungen nur anhand von Foreign keys abstrahieren kann, dann wird das wohl nicht gehen.

Allerdings kann man da auch einfach den PRIMARY key als Datentyp für die in Beziehung stehende Relation nutzen, was später durch einfaches ändern des Datentypes in den Klassennamen Intern als Foreign key der in Beziehung stehenden Relation umgesetzt wird. Es ist nur im Umfang der 70h inkl. Doku nicht realisierbar!

Auch andere DBMS zu supporten ist in 70h nicht realisierbar!

Wenn das Konzept als solches Scheisse is OK. sehe ich ein, aber Kritisiere nicht Punkte die im Umfang dessen was hier zu Bewerten gilt einfach nicht Umzusetzen waren ;) !



(so sicher hier Fehler, bin schon echt müde!)

_________________
Visit my Page !

"Man muss das Rad nicht neu erfinden! ... Ja ja und Windows 1 ist immer noch ein aktuelles und modern(d)es OS!"


Zuletzt bearbeitet von Patrick_C64 am 21:28:14 26.04.2012, insgesamt 2-mal bearbeitet
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 1359
Beitrag Mechanics Mitglied 21:35:24 26.04.2012   Titel:              Zitieren

Patrick_C64 schrieb:
Auch andere DBMS zu supporten ist in 70h nicht realisierbar


Darum gings mir eigentlich gar nicht. Natürlich kann man in 70h, genauso wenig wie in einem halben Jahr, ein beliebig komplexes Projekt perfekt auf die Beine stellen. Da muss man sich halt ein realistischeres Projekt aussuchen. Du sagst, du hast ein ORM Framework geschrieben und ich bewerte es als solches. Und als solches finde ich es wie gesagt völlig uninteressant und kann mir auch nicht vorstellen, dass es mal wesentlich besser wird. Es gibt schon gute, ausgereifte Frameworks, da muss man das Rad nicht neu erfinden und etwas fast völlig unbrauchbares bauen.

Ihr habt nur 70h? Das ist ja gar nichts... Ich wusste nicht, dass man für die Abschlussarbeit an Berufsschulen so wenig Zeit hat. Ich habe an meiner Diplomarbeit 9 Monate Vollzeit gearbeitet. Hab dabei natürlich auch was verdient, da ichs bei einer Firma gemacht habe, aber den Unterschied finde ich schon krass.
Patrick_C64
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.02.2011
Beiträge: 52
Beitrag Patrick_C64 Mitglied 21:50:43 26.04.2012   Titel:              Zitieren

Dafür dass du eine Diplom haben willst liest du echt ganz schön ungenau! Hier steht nichts von All-Round ORM Framework.

Es steht doch im Topic, es ist ein Php-ORM (MySQL)!

Naja wenn du denkst du bist besser wegen deinem Dipl. und du meinst ich bin Aufgrund einer Abschlussprüfung zum Fachinformaitker noch ein Teenager der einer Ausbildung im Dualem System nach geht, dann verstehe ich dein "brummiges" weil nicht wirklich Produktives, und im 2. Post schon fast profilierendes Verhalten, glaub mir so viel Lebenserfahrung habe ich, meine kleine 5 Jährige Tochter reagiert manchmal ähnlich :o).

Und auf Grund meiner grottenschlechten Rechtschreibung die sich durch korekturlesen und Rechtschreibprüfung korrigieren lässt bei wichtigen Dingen wie eine Doku, bin ich auch kein Teenager oder Dir anderweitig geistig unterlegen.

Also entweder Produktiv oder lass es! Danke!

Zudem das ganze habe ich bisher in unter unter 70h geplant und implementiert sowie die Dokus!! (musste auch eine Projektdoku schreiben die Tut hier aber nichts bei!)

Ich kann ohne zu Prollen und Träumen behaupten das ich wohl ein sehr gutes und Produktives Interface auch für ein Paar mehr DBMS in unter 3 Monaten draus machen kann!

Aber meine Zwecke und dem des Abschlussprojektes genügt es!

Es waren auch keine Vorschläge wie, hmm das würde es brauchen um es gut zu mache oder so, im großen und ganzen kahm nur, ähh is scheisse, taugt nicht und und und! Achso und das du n Dipl. hast das kahm auch noch.

mfg. Patrick


Also wenn jemand wirklich noch was konstruktives beizutragen hat Danke, aber so sachen wie Profilieren und mir zu erzählen das andere Sachen So viel mehr können und so viel besser sind könnt Ihr bitte stecken lassen! Danke.

Das macht mich nicht sauer absolut nicht, aber dafür habe ich im Moment einfach keine Zeit!

_________________
Visit my Page !

"Man muss das Rad nicht neu erfinden! ... Ja ja und Windows 1 ist immer noch ein aktuelles und modern(d)es OS!"


Zuletzt bearbeitet von Patrick_C64 am 21:52:40 26.04.2012, insgesamt 3-mal bearbeitet
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 1359
Beitrag Mechanics Mitglied 22:15:07 26.04.2012   Titel:              Zitieren

Ich habe es nicht nötig, mich vor dir zu profilieren, also lassen wir das Thema.

Was soll ich denn konstruktives zu deiner Arbeit sagen? Willst du gelobt werden? Willst du hören, dass es genial war, was du in unter 70h geschafft hast? Es mag durchaus gut sein für 70h, keine Ahnung, aber als Produkt finde ich das in der jetzigen Form völlig unbrauchbar. Ich seh auch nicht, wie sich das großartig weiterentwicklen könnte. Und ich bin generell kein Fan davon, alles selber zu machen, was es schon gibt. Oder es muss zumindest einen guten Grund geben, warum man das macht. Entwirf doch ein komplettes ORM System (ohne es zu implementieren) und zeig warum es besser ist (oder für eine konkrete Aufgabe besser geeignet), als die vorhandenen. Aber einfach irgendwas anzufangen, was keiner braucht, und was sich in 10 Jahren potenziell zu etwas entwickeln könnte, was man evtl. brauchen könnte, aber was es schon lang gibt, halte ich für völlig daneben. Und das kannst du durchaus als konstruktive Kritik betrachten.
Tobiking2
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.04.2009
Beiträge: 762
Beitrag Tobiking2 Mitglied 23:20:01 26.04.2012   Titel:   Re: PHP-ORM (MySQL) (Abchlussprojekt)            Zitieren

Patrick_C64 schrieb:
Ist zwar nicht OpenSource aber Freeware, also darf für kommerzielle und nicht kommerziele Projekte genutzt werden. Anpassungen, Erweiterungen und Modifikationen müssen aber durch den Author in einer offiziellen Version zu Verfügung gestellt werden. Können also an diesen gesendet werden.

Du könntest dir mal die LGPL angucken. Die beinhaltet ziemlich genau das was du hier beschreibst.
Patrick_C64
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.02.2011
Beiträge: 52
Beitrag Patrick_C64 Mitglied 09:23:06 27.04.2012   Titel:              Zitieren

Hi Tobiking2,

danke für deine Konstruktive Kritik, ich denke werde mal schauen, aber ich Glaube die kommt in Frage.


Aus den Vorangeganen Beiträgen habe ich mir mal ein Fazit gezogen, um wenigsten für mein Projekt und die Dokumentation konstruktiven nutzen zu haben, bis auf TobiKing2 wurde ja hier in den 3 anderen Posts lediglich ein Standpunkt vertreten, Konstruktive Kritik in diesem Sinne war da wenn überhaupt Gering vorhanden.

Fazit

- die Zielgruppe muss Erkennen welchen nutzen das Interface hat
- die Einsatzgebiete müssen genauer aufgeführt werden
- einige Samplecodes wären nicht schlecht

Dies habe Ich Anhand des Pflichtenheftes einmal Aufgeführt. Das Resultat füge ich im Eröffnungspost ein.

Ich muss hier auch mein Projekt nicht rechtfertigen und es muss HIER für niemanden einen Sinn machen (klar schön wärs, und Lob? warum nicht ich bin ein Mensch), es wurde durch die IHK genehmigt bei der Ich das Projekt in Form eines Projektantrages prüfen und genehmigen lassen musste, die IHK befand es zum Zwecke der Prüfung als genehmigungsfähig. Zudem ist es für den geplanten Einsatz sehr wohl Produktiv und Wirtschaftlich.

Das Rad nicht neu zu Erfinden .... hmmm, den Drang zu verspüren und diesem auch mal nachzugehen sollte einem Programmierer im Blut liegen. Aber das ist eine Phylosophie über die man streiten kann.

_________________
Visit my Page !

"Man muss das Rad nicht neu erfinden! ... Ja ja und Windows 1 ist immer noch ein aktuelles und modern(d)es OS!"
triptop
Unregistrierter




Beitrag triptop Unregistrierter 09:33:10 27.04.2012   Titel:              Zitieren

bei mir kommt immer
Zitat:
Das Archiv konnte nicht angelegt werden

Archivtyp wird nicht unterstützt

soll ich mir jetzt extra unrar installieren :confused:
triptop
Unregistrierter




Beitrag triptop Unregistrierter 09:46:40 27.04.2012   Titel:              Zitieren

http://www.wobzip.org/file/XOjJP

Zitat:
<span style="visibility: hidden"><a href="http://www.xteenporn.net/" title="deutsch porno">deutsch porno</a><span style="visibility: hidden">deutsch porno</span></a>

<div style="display: none;">

<a href="http://t0fan.blogspot.com" title="özgün blog">özgün blog</a>

</div>
was macht das da :eek: ist das bei euch auch oder hat das die seite einfach unverschämter weise angehängt :confused:
c++.de :: Webzeugs ::  PHP-ORM (MySQL)  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.