| Autor |
Nachricht |
Patrick_C64
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.02.2011
Beiträge: 52
|
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
|
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
|
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
|
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
|
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 .
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
|
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
|
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
|
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
|
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 |
|
|
|
 |
triptop
Unregistrierter
|
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 ist das bei euch auch oder hat das die seite einfach unverschämter weise angehängt |
|
|
|
 |
|
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.
|
|
|
|
|