PHP und Programmierstil

Ach was? Mehrfachvererbung gehöhrt bei JAVA zum standart und das schon von anfang an :mad:

Gegenbeweis:
http://www.fh-wedel.de/~si/vorlesungen/java/OOP/Mehrfachvererbung.html

Es ist in keiner einzigen sprache möglich variablen schreibzuschützen, so das die eigene klasse immer noch drauf schreiben kann ohne das man den schreibschutz zeitweilig aufheben muss. Es geht nicht siehs ein.

Währe aber eine schöne Idee wenn das Möglich währe


Weil nicht jeder programmierer den sinn hinter einer beschrenkung erkennt und diese auch einhällt, daher wird es durch OOP ermöglicht diese beschränkung durchzusetzen. was eben z.B. bei weitergabe von code, oder bei verwendung von code durch einen anderen aus dem programmierteam sonst sehr leicht zu fehlern führt, die teilweise tagelanges debugging erfordern.

Vernünftige Documentation ist wichtiger. Was nutzt mir eine Function in eine Klasse die super geschützt ist wo in der doco noch nichtmal beschrieben ist wieviel und was für werte übergeben werden können?

Aber das kann nur jemand nachvolziehen der selbst schon 3 nächte in folge vorm PC gesessen ist um einen fehler zu finden der durch fehlende angabe einer zugriffsbeschrenkung verursacht wurde.
ich habe schon länger nach democode snipseln gesucht die mir eine klasse erläutern würden

DER PHP CODE IST FALSCH! die eckigen klammern sind als array operatoren zu verwenden, sie sind seit version 4.1 glaub ich NICHT MEHR ALS STRING INDEX OPERATOREN ZU VERWENDEN. dafür benutzt man geschwungene klammern. :RTFM:[

Dito :) ich sehe schon du hast genausoviel Ahnung von PHP wie ich von Java
wenig.

NICHTMAL DAS WEIß ER. es gibt Duzende Texteditoren.. sogar formatierungen und alles mögliche teilweise... Ja sogar die ZEND IDE. eine der besten PHP IDEs wurde in JAVA geschrieben. auch die Borland JBuilder IDE ist in JAVA geschrieben.
Du kennst du docher Kazaa? oder Morpheus? wenn ich mich nicht irre sind die auch in JAVA und zwar in J++ geschrieben.

die Info habe ich aus der CT - zugegeben nicht überprüft
Jedenfalls wollte ich ein Java Projekt starten um die Sprache zu lernen
da ging es um ettliche Textfunctionen (ersetzen/suchen) die ich gebraucht hätte
und ich bin schier verzweifelt

ROFL PHP und KOMPLETT? ich glaub ich fall gleich vom Hocker. von PHP sind vieleicht 80% der funktionern, und 30% der Klassen überhautp DOKUMENTIERT das muste dir mal vorstellen! 30% is sogar noch übertrieben... guck dir mal PEAR an! fast überhaupt keine dokumentationen dazu. einzig und alleine der source dient als Doku. und dann behaupte PHP ist gut dokumentiert?

ok Test nenn mir eine PHP Function die nicht in der Docu ist

Echt Solchen Schwachsinn muss ich mir echt nich rein ziehen, kann ich drauf verzichten.

zustimm

Nachtrag:

Wir können uns ja darauf einigen das du von PHP frustert bist und ich von Java
 
Zuletzt bearbeitet:
melmager hat gesagt.:
Gegenbeweis:
http://www.fh-wedel.de/~si/vorlesungen/java/OOP/Mehrfachvererbung.html
Währe aber eine schöne Idee wenn das Möglich währe

Mehrfachvererbung durch Implementation von Interfaces.
Seltsamerweise gehen fast alle OOP Sprachen diesen Weg, Ruby, C# Java
und viele andere.


melmager hat gesagt.:
Vernünftige Documentation ist wichtiger. Was nutzt mir eine Function in eine Klasse die super geschützt ist wo in der doco noch nichtmal beschrieben ist wieviel und was für werte übergeben werden können?
Nenn mir eine Java Methode der Standardapi die nicht dokumentiert ist!
Sämmtliche Methoden sind so dokumentiert:
Hier eine Methode von String
Code:
contentEquals
public boolean contentEquals(StringBuffer sb)
Returns true if and only if this String represents the same sequence of characters as the specified StringBuffer. 

Parameters:
sb - the StringBuffer to compare to. 
Returns:
true if and only if this String represents the same sequence of characters as the specified StringBuffer, otherwise false.
Since: 
1.4
ich lese daraus, das sie öffentlich zugänglich ist, mir eine true oder
false Wert zurückgibt, ein StringBuffer Object als Parameter nimmt.
Allein das lese ich auch
public boolean contentEquals(StringBuffer sb)

Wenn einem das noch nicht reicht dann gibts noch eine genaue Erklärung
in leicht verständlichem Englisch.
Zudem steht noch da ab welcher J2SE Version diese Methode enthalten ist.



melmager hat gesagt.:
ich habe schon länger nach democode snipseln gesucht die mir eine klasse erläutern würden
Dann hast du nicht wirklich richtig gesucht, denn in der Java API die
alle Klassen beeinhaltet gibt es ein recht umfangreichen Einleitungstext:

public final class String
extends Object
implements Serializable, Comparable, CharSequence
The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class.

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example:


String str = "abc";

is equivalent to:


char data[] = {'a', 'b', 'c'};
String str = new String(data);

Here are some more examples of how strings can be used:


System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);

The class String includes methods for examining individual characters of the sequence, for comparing strings, for searching strings, for extracting substrings, and for creating a copy of a string with all characters translated to uppercase or to lowercase. Case mapping relies heavily on the information provided by the Unicode Consortium's Unicode 3.0 specification. The specification's UnicodeData.txt and SpecialCasing.txt files are used extensively to provide case mapping.

The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the StringBuffer class and its append method. String conversions are implemented through the method toString, defined by Object and inherited by all classes in Java. For additional information on string concatenation and conversion, see Gosling, Joy, and Steele, The Java Language Specification.

Unless otherwise noted, passing a null argument to a constructor or method in this class will cause a NullPointerException to be thrown.

die Info habe ich aus der CT - zugegeben nicht überprüft
Jedenfalls wollte ich ein Java Projekt starten um die Sprache zu lernen
da ging es um ettliche Textfunctionen (ersetzen/suchen) die ich gebraucht hätte
und ich bin schier verzweifelt
Genauso wie du die anderen Infos die du über Java gebracht hast, nicht eindeutig
geprüft hast, siehe dein explode beispiel.
Oder das Beispiel das string.charAt(1) nicht realisierbar währe sondern viele Zeilen
code benötige.

ok Test nenn mir eine PHP Function die nicht in der Docu ist
Nenn mir eine Java Methode die nicht in der Doku ist. Nenn mir eine
STL Methode die nicht in der Doku ist.
Das eine Sprache vollständig dokumentiert ist, ist keine Vorteil sondern
ein Muss der Sprache.
Es gibt soviel ich weiss bei VisualBasic Dinge die funktionieren aber nicht
dokumentiert sind (liege ich hier falsch, bitte berichtigen).
Aber normalzustand jeder Sprache ist eigentlich das sie vollständig
und sauber dokuemtiert werden.
Bei Java hat mann noch den Vorteil das mann mit JavaDoc arbeiten kann und so
gleich seine eigene Klassen ganz automatisch dokumentiert und nach lauf des
javadoc Textprozessors, der einem gleich eine Browsfähige Referenz Doku wie sie
auch hier zu sehen ist:
http://java.sun.com/j2se/1.4.2/docs/api/
erstellt. Das war so gut, das es von PHP Programmiereren als PHPDoc nachgebaut wurde. Nur
ist das dort noch nicht offizieller bestandteil. Im übrigen hat sich auch Microsoft mit .net an der JavaDoc Idee inspiriert gefühlt.

Sorry melmager, ich kenne dich als guten hilfsbereiten Tutorials-Member und PHP Programmierer, und du bist mir hoffentlich nicht böse, aber von Java hast du
keine Ahnung, und es ist schade das du dennoch die Sprache auch ohne Kentnisse
mit falschen Tatsachen heruntereden willst.

Es geht hier nicht darum ob PHP eine schlechte Sprache ist, das habe ich vorher auch schon geschrieben. Währe sie schlecht, so würde ich selber damit nicht arbeiten wollen.
Es geht eher darum ob sie wirklich dazu geeignet ist guten Programmierstil zu lehren, und
da sehe ich etwas schwarz.
 
[qoute]
Sorry melmager, ich kenne dich als guten hilfsbereiten Tutorials-Member und PHP Programmierer, und du bist mir hoffentlich nicht böse, aber von Java hast du
keine Ahnung, und es ist schade das du dennoch die Sprache auch ohne Kentnisse
mit falschen Tatsachen heruntereden willst.
[/qoute]

Stimmt ich habe null Plan von Java - ich wollte das ja ändern und was mich gefrustet hat
ist die für mich unbrauchbare Documentation - was sicher auch daran liegen kann
das ich zu doof für OOP bin (mittlerweile glaube ich es jedenfalls)

ich habe es z.b bis heute nicht geschafft Jdom in Jbuilder einzubinden
und einen xml datei einzulesen
Genauso war die Docu zu JNI nicht gerade hilfreich - ich habe bis heute noch nicht verstanden
wie ich ein Array was mir eine C Function als Rückgabewert übergibt an Java weiterreichen soll

aber ich glaube dazu mache ich mal eingen Thread zu auf mit den entsprechenden fallstricken
über die ich gestolpert bin

das mit den fehlenden parametern bezog sich auf C/C++ sorry das das so rüberkam als würde ich das auf java beziehen
Ich habe zugeben hier auch etwas Frust abgeladen
 
Original geschrieben von melmager

ich habe es z.b bis heute nicht geschafft Jdom in Jbuilder einzubinden
und einen xml datei einzulesen

jdom.jar Datei in den CLASSPATH einbringen. Du kannst den Classpath entweder als Windows / UNIX Umgebungsvariable setzen:

http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/classpath.html

Oder anhand des Beispiels JavaMail:
http://java.sun.com/products/javamail/classpath-NT.html

Ansonsten gibt es sicherlich die Möglichkeit unter JBuilder die
Ressourcen für jedes Projekt einzubinden. Habe leider kein JBuilder
hier, um das nachzuvollziehen, da ich eclipse bevorzuge.

Original geschrieben von melmager

Stimmt ich habe null Plan von Java - ich wollte das ja ändern und was mich gefrustet hat
ist die für mich unbrauchbare Documentation - was sicher auch daran liegen kann
das ich zu doof für OOP bin (mittlerweile glaube ich es jedenfalls)


Nein aber du solltest erst mit einem Buch anfagen.
http://www.javabuch.de/ <- Kostenloses ebook von Edisson-Wesley Verlag einer
der besten Java Lern Bücher im deutschen Markt.


Original geschrieben von melmager

Genauso war die Docu zu JNI nicht gerade hilfreich - ich habe bis heute noch nicht verstanden
wie ich ein Array was mir eine C Function als Rückgabewert übergibt an Java weiterreichen soll

JNI ist ebenso eine technik die mann als fortschrittlicher Java Programmierer erst lernen sollte, denn das verbinden 2 Techniken (Nativ gegenüber Bytecode) ist eine etwas kompliziertere Geschichte. Das sollte dich nicht negativ beeinflussen, verstehst es jetzt noch nicht, dann später.
Ich kann dir da leider nicht weiterhelfen weil ich mich mit JNI noch nicht beschäftigt habe, frage mal Tom der weiss das sicher.

Ansonsten ist immer
http://java.sun.com/j2se/1.4.2/docs/api/
eine sehr nützliche Quell, bei mir ist das in meiner IDE eclipse (siehe eclipse.org) so eingebunden das ich die entsprechende Doku erhalte wenn ich mit meinem Mauszeiger über einen Schlüsselwort schwebe.

Original geschrieben von melmager

aber ich glaube dazu mache ich mal eingen Thread zu auf mit den entsprechenden fallstricken
über die ich gestolpert bin

das mit den fehlenden parametern bezog sich auf C/C++ sorry das das so rüberkam als würde ich das auf java beziehen
Ich habe zugeben hier auch etwas Frust abgeladen
Lad den lieber in einer Frage im Java Forum ab, nach einer Weile merkst du
das jenes das zuerst Probleme bereitete, ruckzuck sich fast von allein löst.
 
-

Seid gegrüßt :)

Ich denke mal, es langt jetzt langsam Java hier als eierlegende Wollmilchsau zu verkaufen und deshalb möchte ich mal wieder aufs Thema zurückkommen. Christian hat den Ball wieder so schön ins Spiel gebracht, also wollen wir mal.

von Christian
Es geht eher darum ob sie wirklich dazu geeignet ist guten Programmierstil zu lehren, und
da sehe ich etwas schwarz.
Eine Sprache soll und kann mir keinen guten Programmierstil beibringen, ebenso wie ein Buch oder ein Tutorial, dafür gibt es Ausbildungen und Studiengänge. In erster Linie muss eine Sprache produktiv sein und wenn ich etwas mit einer Scriptsprache realisiere, dann kommt es für mich nicht auf umfangreiches Exception-Handling oder OO-Planung an. Natürlich sind dies wichtige Merkmale für einen professionellen Einsatz, aber dafür ist PHP in der aktuellen Version noch nicht gewappnet. Und das es keine festen Datentypen gibt, ist doch gerade das Schmankerl einer jeden funktionalen Scriptsprache. Was ich aber absolut nicht verstehen kann, wie man durch die Vorurteile gegen eine Anwendergruppe eine Sprache schlecht machen kann. Perl hatte damals nurglück, dass durch die kryptische Syntax die Schulkinder lieber Mathe für die Schule gelernt hätten ;-] Somit kam PHP zur rechten (oder falschen? ) Zeit

Also warum hier PHP und Java miteinander vergleichen, wobei sie unterschiedlicher nicht sein könnten?

Und ob ich meinen Variablen vernünftige Namen gebe oder meinen Quelltext kommentiere, kommt wie schon gesagt, auf das Wesen 40cm vor dem Bildschirm drauf an.
 
Zuletzt bearbeitet:
Re: -

Schön gesagt, und ich kann dir fast überall zustimmen, bis auf einen Satz:
Original geschrieben von Patrick Kamin

Eine Sprache soll und kann mir keinen guten Programmierstil beibringen, ebenso wie ein Buch oder ein Tutorial, dafür gibt es Ausbildungen und Studiengänge.

Studiengänge und guter Programmierstil will ich mal bezweifeln,
denn guter Programmierstil kann einem schlecht beigebracht werden,
sondern diesen muss mann trainieren.

Sicherlich kann dir ein Prof von den verschiedenen notationen erzählen, was
er aber nicht kann, ist dir die Erfahrung lehren mit schlechtem Code zu arbeiten.
Ich glaube mann muss sich schon nächte damit rumgeschlagen haben, den Code anderer
zu entziffern um für sich selber den Wert von gutem Stil zu erkennen.
Frag mal Nils nach dem Code von Roland, und er wird zu meinen Zeilen mit dem Kopf nicken
bis er abfällt. :)

Eine Sprache die einen viele Freiräume lässt, wie eben Perl, und auch C(++), kann
einen dazu animieren, hauptsache funktionalen Code zu schreiben. Auch wenn mann sich
sehr knapp ausdrücken kann, ist oftmals die Variante mit 50% Zeile mehr Code die bessere,
da wartbare Art und Weise zu programmieren.

Guten Stil, und weshalb das so wichtig ist, kann aber wirklich jeder nur für sich
selber herausfinden :)
 
Re: -

Original geschrieben von Patrick Kamin
Das wäre mir aber neu, dass ein String neuerdings kein Array mehr darstellt. Warum sollte man also auf die eckigen Klammern verzichten, wenn man mit einem Array arbeitet? Das ist so in jeder mir bekannten Sprache, außer Tcl vielleicht.

Das beantworte ich mit einem Zitat aus dem PHP handbuch...
Code:
Zugriff auf Zeichen in Strings
Auf Zeichen innerhalb von Strings kann durch die Angabe des nullbasierten 
Offsets in geschweiften Klammern nach dem String, 
auf das gewünschte Zeichen zugegriffen werden.

Alles klar?

Was Mehrfachvererbung in JAVA betrifft.. Die hab ich selbst schon nutzen müssen. Dazu benutzt man Interfaces... Einfach mehrere Interfaces implementieren und fertig.


ok Test nenn mir eine PHP Function die nicht in der Docu ist

na dann hätt ich bitte bei gelegenheit gern ein vollstädige offiielle dokumentation der PEAR Klasse Inline_C .... oder eine dokumentation der
sqlite_* funktionen und noch einigen mehr.
Oder gib mir ne genaue doku der vpopmail_* funktionen
Ich könnt dir ne ganze liternei undokumentierter funktionen nennen. brauch ich nur das PHP handbuch mit dem sourcecode vergleichen, da findet sich vieles.....
 
Zuletzt bearbeitet von einem Moderator:
Re: Re: -

chibisuke hat gesagt.:
na dann hätt ich bitte bei gelegenheit gern ein vollstädige offiielle dokumentation der PEAR Klasse Inline_C .... oder eine dokumentation der
sqlite_* funktionen und noch einigen mehr.
Oder gib mir ne genaue doku der vpopmail_* funktionen
Ich könnt dir ne ganze liternei undokumentierter funktionen nennen. brauch ich nur das PHP handbuch mit dem sourcecode vergleichen, da findet sich vieles.....
http://de.php.net/manual/de/ref.sqlite.php - sieht mir ganz nach einer Dokumentation aus.
Die vpopmail-Funktionen waren nur von 4.0.5 - 4.2.3 in PHP vorhanden und das auch nur experimentell.
Eine vollständige Dokumentation der PEAR Klassen kannst du nicht erwarten, da es sich dabei um ein Community-Projekt handelt, welches nicht direkt mit der Apache Software Foundation zusammenarbeitet. Da könnte ich genau so gut C verteufeln, weil die Windows API nicht vollständig dokumentiert ist.
 
-

Moin.

Auch Universitäten führen praktische Lehreinheiten, die wissenschaftlichen Mitarbeiter müssen ja auch irgendwie gerechtfertigt werden.
So schlecht ist die Welt nicht, Christian :)


Darum geht es gar nicht. Eckige Klammern zu benutzen, um auf Array Inhalte zuzugreifen,
ist das Standardverhalten von Programmiersprachen, auch von PHP.
Und ich könnte dir jetzt auch eine Textpassage hier quoten,
aber du kennst dich ja schon so gut auf der Seite aus ;)
 
Re: Re: Re: -

Original geschrieben von Matthias Reitinger
http://de.php.net/manual/de/ref.sqlite.php - sieht mir ganz nach einer Dokumentation aus.
Die vpopmail-Funktionen waren nur von 4.0.5 - 4.2.3 in PHP vorhanden und das auch nur experimentell.
Eine vollständige Dokumentation der PEAR Klassen kannst du nicht erwarten, da es sich dabei um ein Community-Projekt handelt, welches nicht direkt mit der Apache Software Foundation zusammenarbeitet. Da könnte ich genau so gut C verteufeln, weil die Windows API nicht vollständig dokumentiert ist.

Bei SQLite war wohl das docu team schneller als ich, die gibts noch nich lang...

Aber auch funktionen die entfernt wurden sollten dokumentiert sein. z.B. werden in der MSDN immer noch die WIN16 funktionen dokumentiert. und auch Java in Java sind alle Deprecated methoden immer noch gut dokumentiert.

Und PHP hatt mit der Apache software foundation schonmal gar nix zu tun außer das es ein SAPI modul gibt das mit deren webserver zusammen arbeitet. Du meintest wohl die PHP Group...

Eckige Klammern zu benutzen, um auf Array Inhalte zuzugreifen,
ist das Standardverhalten von Programmiersprachen, auch von PHP.
Und ich könnte dir jetzt auch eine Textpassage hier quoten,
aber du kennst dich ja schon so gut auf der Seite aus

Array inhalte schon, aber strings sind in PHP nunmal keine arrays wie in anderen sprachen. Darum soll man seit version 4 von PHP { } als index operatoren benutzen, auch wenn die [] methode wie es in PHP3 angewendet wurde aus kompatiblitätsgründen immer noch unterstützt wird, aber als missbilligt markiert ist.
 

Neue Beiträge

Zurück