php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 4,00 durchschnittlich.
  #1 (permalink)  
Alt 19-11-2009, 00:23
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard Pluralization of english nouns

Hallo Zusammen,

ein kleines Problemchen bzw. ein Code Smell, der mich schon länger in meiner ZF-Mutation nervt.

Und zwar: Aus Tabellennamen erstelle ich dynamisch Module und Items, die wiederum mit generischen Controllern und Actions dargestellt werden. Zum Beispiel aus der Tabelle shop_products wird das Modul Shop, dass einen Product-Controller hat, der generalisiert list-, view-, edit-, add-, delete- und eine ganze Reihe mehr Actions enthält. Weder das Modul noch den Controller muss ich physisch erstellen. Man beachte nun, dass der Tabellenname "products" beinhaltet (also Plural) während der Controller (und ach später in der URL-Route) Product heißt. Das halte ich für sinnig, denn im Controller fackel ich (in den allermeisten Fällen) nur Aktionen auf einen Datensatz ab.

Wie dem auch sei. Wir wissen, dass es leider nicht immer reicht ein S an den Singular eines Nomens zu hängen um ein Plural draus zu machen. Bisher hab ich das ignoriert, was dazu führt, dass ich Tabellennamen wie "news_entrys" oder "bladiblubb_childs" habe. Beides falsch. Im ersten Fall kann man noch sagen, dass man halt auf ein y am Ende prüfen könnte. Aber child und children ist unregelmäßig, und das ist nur das, was mir als erstes eingefallen ist. Spontan kommen mir da noch eine ganze Menge mehr in den Sinn, zum Beispiel alles, was sowohl im Plural als auch im Singular gleich ist: Glasses, Trousers, Jeans.

Wie gesagt, das nervt mich an und ich würde das gerne beheben. Leider kommt mir keine Vernünftige und vor allem Robuste Methode in den Sinn, wie man das anstellen könnte. Meine beste Idee (und bisher auch der beste Ansatz den ich dazu im Netz finden konnte) war dieses Stückchen Python: Smart pluralisation (English) ActiveState Code

Aber irgendwie ist das IMHO immer noch nicht das gelbe vom Ei! Also richte ich mich eines der wenigen Male fragend an die Community! Mal sehen was euer Hirnschmalz so hergibt

Cheers,

Cem

Geändert von unset (19-11-2009 um 00:37 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-11-2009, 00:35
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

ich hab das in den Fällen, wo ich damit konfrontiert war, so gelöst, dass ich die Pluralisierung durch Zusammensetzung mit einem der folgenden Worte gebildet hab:
  • ...Array
  • ...List
  • ...Elements
  • ...Items
  • ...Set
  • ...Collection

Das ist zwar nicht so elegant wie ein natürlicher (und korrekter) Plural, aber genau so sinnvoll und verständlich.

Gruß,

Amica
Mit Zitat antworten
  #3 (permalink)  
Alt 19-11-2009, 00:39
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Den Umweg bin ich auch gegangen, wenn irgendwas nach außen hin Sichtbar war. Aber um ehrlich zu sein, will ich mir in Zukunft aber eigentlich keine Gedanken mehr darum machen, ob ich ein Nomen habe, dass das System "pluralisieren" kann.
Mit Zitat antworten
  #4 (permalink)  
Alt 19-11-2009, 00:47
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Wikipedia: English plural wäre meine erste Anlaufstelle.
Das gibt schon einiges an „Regeln” her, an die man sich halten kann.
Darum, die Sonderfälle in Form von Listen vorzuhalten, die zuerst abgeprüft werden, führt wohl kaum ein Weg vorbei.


Ob sich der Aufwand lohnt, wäre eine andere Frage.
Sowohl vom algorithmischen her als auch von der Rechenzeit, die dafür draufgeht, wenn du das jedes Mal dynamisch und on-the-fly machst, scheint mir eine in der Applikation hinterlegte Liste, in der Singular und Plural abgelegt werden, vielleicht doch der bessere Weg. Klar, die will beim Anlegen einer neuen Tabelle jedes mal ergänzt werden ... aber diesen vertretbar geringen Aufwand durch x Zeilen an Code zu ersetzen, scheint mir die Materialkosten der Kanonenkugel nicht wert, wenn ich den Spatz auch einfach erschlagen kann ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-11-2009, 00:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum die Tabellen nicht einfach mit der Einzahl benennen? Dass eine Tabelle normalerweise mehr als einen Eintrag enthält, sollte wohl selbstverständlich sein und bedarf keiner Hervorhebung mittels Mehrzahl. IMHO.
Mit Zitat antworten
  #6 (permalink)  
Alt 19-11-2009, 13:26
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Weiß ich ehrlich gesagt auch nicht mehr –*aber ich befürchte, da habe ich mir am Anfang was bei gedacht

Am Ende werde ich es wahrscheinlich tatsächlich mit allen gefundenen Regeln, eine Sonderfallliste und einem Cache lösen.
Mit Zitat antworten
  #7 (permalink)  
Alt 19-11-2009, 13:42
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du brauchst die Bezeichner überall im Singular, aber der Tabellenname, den kaum jemand zu Gesicht bekommt, soll unbedingt im Plural sein? Wozu?

Wenn für diese Kleinigkeit ein Haufen Code und Lookup-Tabellen existieren, stinkt das noch viel mehr als der Singular in der DB.
Mit Zitat antworten
  #8 (permalink)  
Alt 19-11-2009, 13:52
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Ne, das war schon ein bisschen anders, gestern hab ich das aus dem Kopf niedergeschrieben, ohne das Dingen vor mir gesehen zu haben –*da hab ich mich ein bisschen vertan. Konkret sieht es so aus, dass der Controller und die Tabellen im Plural, die Modelle (auch die virtuellen) in der Einzahl hinterlegt sind. Das begründet sich daraus, dass auch sonst alles stets im Singular benannt wird –*und das soll auch bitteschön weiter so bleiben (und ja, mir ist klar das Controller hier ein Sonderfall sind). Prinzipiell geht es ja hier auch nicht um das Design sondern um ein konkretes Problem –*das Design hab ich ja nur des leichteren Verstehens halber kurz angerissen.
Mit Zitat antworten
  #9 (permalink)  
Alt 19-11-2009, 14:02
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Was spricht gegen "nur Singular"? Aus Tabelle show_product wird Modul Show und Controller Product oder ShowModule und ProductController ...
Mit Zitat antworten
  #10 (permalink)  
Alt 19-11-2009, 14:08
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Spontan fällt mir nicht mehr ein, was ich mir dabei gedacht habe …*abgesehen davon, dass das Design nach wie vor nicht das Thema ist
Mit Zitat antworten
  #11 (permalink)  
Alt 19-11-2009, 14:58
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wie so oft wäre das Thema erledigt, das eigentliche Problem würde nicht mehr existieren, wenn du alles im Singular machst. Deshalb finde ich es legitim, so vom Thema abzuweichen.

Im Prinzip ist es vergleichbar mit dem Problem "wo kann meine Applikation temporäre Dateien ablegen". Korrekterweise im tmp-Dir. Aber wo ist das und hat sie Schreibzugriff? Muss sie die Dateien selbst wieder löschen oder macht das das OS?
Statt viel Code zu schreiben, kann man auch einfach bei der Installation ein eigenes tmp/ als Unterverzeichnis der Applikation anlegen. Alles was die App da reinschreibt, muss sie auch selbst wieder löschen. Kein if, kein switch, keine Abhängigkeiten vom OS oder sonstwas. Weniger Code, selber Effekt.

Einziges Manko: Wenn der User sein tmp-Dir leert, gewinnt er nicht das Maximum an Plattenplatz.
Manko bei dir: Wenn mal ein Entwickler in die DB schaut, erkennt er nicht, dass show_product eine 1:N Verknüpfung ist, sondern hält es evtl. für 1:1. Aber passiert das wirklich? Und wenn schon, ist es ein Problem? Kann man das notfalls nicht auch mit einem Tabellenkommentar erschlagen?
Mit Zitat antworten
  #12 (permalink)  
Alt 19-11-2009, 17:14
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Hier gibt es ein Stückchen Code zum Pluralisieren unter der MIT-Lizenz. Nutze diesen auch in einem internen Generator-Projekt und habe bisher keine Probleme feststellen können.

Edit als Argument gegen Tabellennamen in Singular: Eine Tabelle enthält mehrere Datensätze, stellt also definitiv einen Plural dar.

Geändert von PHP-Desaster (19-11-2009 um 17:18 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 19-11-2009, 17:50
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von PHP-Desaster Beitrag anzeigen
Edit als Argument gegen Tabellennamen in Singular: Eine Tabelle enthält mehrere Datensätze, stellt also definitiv einen Plural dar.
Kann man so oder so argumentieren. Man kann auch sagen dass es eine Tabelle vom Typ Person ist.

Ich persönlich find es einfach einfacher, als wenn man ständig irgendwo zwischen Einzahl und Mehrzahl herummappen muss. Modell "person" == Tabelle "person". Ist doch viel einfacher.

Du sagst ja auch nicht Äpfelkuchen, nur weil mehr als ein Apfel drin ist, oder?
Mit Zitat antworten
  #14 (permalink)  
Alt 19-11-2009, 17:58
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Du sagst ja auch nicht Äpfelkuchen, nur weil mehr als ein Apfel drin ist, oder?
Aber man sagt Wörterbuch ;-)
Mit Zitat antworten
  #15 (permalink)  
Alt 19-11-2009, 18:04
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Aber warum sich das Leben unnötig schwer machen? Wie die Datenbanktabelle heißt sieht nur der Programmierer, und dem kanns ja ziemlich egal sein ob ein s dahinter steht oder nicht. Der Endbenutzer bekommt das eh niemals zu Gesicht.

Geändert von h3ll (19-11-2009 um 18:07 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Learn English... jahlives Out of Order 3 28-09-2007 18:03
English for beginners TroX Off-Topic Diskussionen 9 15-01-2007 16:41
Kredikarten (english required) mrhappiness Out of Order 8 05-01-2005 14:20
Board speaks English? TobiaZ Fragen/Vorschläge zum Forum 2 30-10-2003 14:07
English Translation ice_cube Webmaster 3 10-04-2002 23:37

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:44 Uhr.