Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
OOP
#1
Ja, die Projektorientierte Programmierung. Hört sich ganz toll an und in einem Buch über C++, das ich mir erst vor kurzem zugelegt habe wird sie als Herzstück der Sprache bezeichnet. Mir geht es aber eigentlich nicht darum was OOP ist oder sonst was, nein, ich frage mich ganz ehrlich was sie bringt. Sicher, es verkürzt ein Script und man spart beim schreiben Zeit, da man die Funktionen einfach in eine Datei packen kann und diese dann includen kann, sodass man sie nicht immer neu schreiben muss. Ist ja ganz schön, aber sonst konnte ich bisher weder in Tuts, noch in Büchern andere Vorteile erkennen und zugegeben schreibe ich ein Script lieber ein wenig länger, doch finde ich es so noch wesentlich unkomplizierter, als mit den Funktionen. Ich habe bisher zwar noch keine großen Projekte wie eine Forensoftware oder ein BG gemacht, aber eine Mod für eine Software, die das Ganze schon ein wenig zu einem BG macht(man hat EXP, kann sich Waffen kaufen, Stats erhöhen etc.) aber ich habe noch nie andere Funktionen/Klassen, außer denen, die von der Software bereits integriert sind, benutzt. Also ganz konkret gesagt: Was bringt die OOP noch für Vorteile?
Reply
#2
die frage nach dem warum kommt sehr häufig vor bei anfängern in sachen OOP.
die gute wiederverwendbarkeit vom code ist nur ein kleiner vorteil der oop, der größte vorteil ist meiner meinung nach die datenkapselung. durch OOP lassen sich große projekte besser in module unterteilen, besser warten, besser erweitern, ermöglichen eine höhere sicherheit, allerdings ist der aufwand in der plaung eines projektes größer als sonst. Sobald ab PHP 5.3 Namensräume implimentiert sind wird die ganze arbeit mit frameworks und apis leichter.
Reply
#3
In Sachen Sicherheit bin ich nicht der Experte, deshalb kann ich da nicht wirklich etwas darüber sagen. Ich weiß nur ein paar grundlegendene Sachen, wie z.B. die Verschlüsselung eines Passwortes(über md5 oder sonstwas) oder, dass man Benutzerdaten nicht über die URL übergeben darf, oder ähnliches. Das sich Projekte leichter erweitern lassen ist auch klar, da man ja nicht mehr alle Dateien einzeln abändern muss, doch bin ich zumindest beruhigt, dass ich dadurch, dass ich OOP bis jetzt nicht wirklich genutz habe, keine extremen Nachteile hatte.

PS: Passt zwar nicht zum Thema, aber mir brennt gerade die folgende Frage auf der Zunge: Wie, bzw. kann man via PHP etwas in Dateien schreiben? Ich bin mir zu 99% sicher, also gehe ich direkt zur nächsten Frage über. Mich würde nun natürlich der Befehl oder die Befehle interessieren, die man benutzen muss/kann um etwas in eine Datei zu schreiben.
Reply
#4
Mit der OOP kann man seit PHP5 sehr viel anstellen, wenn mans kann. Ausnahmebahandlung, Entwurfsmuster, Autoload, Statische Funktionen ...
leider ist die OOP noch nicht wie in allen Programmiersprachen implimentiert ist werfen leiderPHP eigene funktionen noch keine Exceptions, Namensräume Fehlen noch usw. und bis das alles fertig ist wird es noch dauern.

Ja, mit PHP kann man Dateien verarbeiten, lesen, Schreiben, Erstelle, Löschen, rechte vergeben, das gleiche gilt für Ordner.
Reply
#5
(14.01.2009, 23:48)Ephelian Wrote: Das sich Projekte leichter erweitern lassen ist auch klar, da man ja nicht mehr alle Dateien einzeln abändern muss, doch bin ich zumindest beruhigt, dass ich dadurch, dass ich OOP bis jetzt nicht wirklich genutz habe, keine extremen Nachteile hatte.

Ich kenne die größe deiner Projekte nicht, aber mein erstes großes Projekt (Sicher über 100.000 Zeilen Code) habe ich vor ca. 5 Jahren ohne OOP gemacht und ich habe es später kaum noch geschafft Bugs zu beheben. OOP hat schon extreme Vorteile in den Bereichen Debugging und Extending, vorallem ist das Risiko Variablen ungewollt zu überschreiben viel geringer als ohne OOP/Klassen.

Viele Grüße,
Agrafix
Reply
#6
Ich möchte kein neues Thema aufmachen, also nutze ich einfach mal dieses hier weiter.
Ich suche eine Funktion, mit der man HTML sozusagen deaktiviert und die Tags als String ausgegeben werden, doch sollten Absätze natürlich noch gehen. Momentan habe ich es so gelöst, dass ich beim Schreiben der Nachricht die Funktion nl2br() benutze und bei der Ausgabe dann strip_tags($string, '<br>'), doch gefällt mir das noch nicht so ganz, da es im Prinzip alles funktioniert, doch werden die HTML Tags(ausgenommen der <br> Tag) durch strip_tags() gelöscht und nicht einfach ausgegeben. Kann mir da jemand weiterhelfen?
Reply
#7
ersetze alle <br> tags durch ein newline und mache das nach danach wieder rückgängig, und verwende htmlentities um alle html spezifichen sonderzeichen in ihre html entsprechung umzuwandeln
Reply
#8
Das Ersetzen würde ich über str_replace realisieren, allerdings wird in der Datenbank der Zeilenumbruch per \n angezeigt, in der Ausgabe dann aber nicht. htmlentities habe ich nicht getestet, aber das, was ich darüber gelesen habe, hat nicht so ganz meinen Vorstellungen entsprochen, weshalb ich glaube, dass ich mich unklar ausgedrückt habe.
Im Prinzip will ich es genau wie hier im Forum, wenn man einen Beitrag schreibt. Man erhält einen Zeilenumbruch, wenn man einen macht, aber wenn man HTML schreibt, also z.B. <b>hallo<b> wird es nur als Text ausgegeben und auch <br> kann man schreiben ohne einen Zeilenumbruch zu erhalten, was durch str_replace ja nicht mehr funktionieren würde.

EDIT: Beim wbblite habe ich folgendes gesehen: stripcrap(trim($message)), allerdings kann ich über stripcrap weder im Manual, noch in Google etwas finden.
Reply
#9
stripcrap is eine userfunction von wbblite,

bsp:
PHP Code:
function text_to_html($string ) {
   
$string stripslashes($string);
   
$string htmlentities($string);
   
$string nl2br($string);

return 
$string;

Reply
#10
Ok, danke, funktioniert einwandfrei.

Btw. da habe ich ja gleich das erste Bisschen 'OOP' Wink.
Reply
#11
dass is ja ne normale function, oop in php5 sähe dann so aus

PHP Code:
abstract class Text {

   public static function 
textToHtml($string ) {
      
$string stripslashes($string);
      
$string htmlentities($string);
      
$string nl2br($string);

   return 
$string;
   } 
}

echo 
Text::textToHtml($_POST['eingabe']); 
Reply
#12
Jop, deshalb habe ich es ja in ' geschrieben.
Der Code sieht doch schon sehr nach C++ OOP aus, naja, dann werde ich mir das wohl auch irgendwann mal wieder durchlesen müssen.
Reply
#13
die syntax die du da jetzt meinst ist ja die der namensräume, damit hat das jetzt aber erstmal nix zu tun, das ist einfach eine statische funktion die überall auch ohne initialisieren der klasse in ein objekt verfügbar ist.
ab php 5.3 git es namensräume das würde das so aussehen:
PHP Code:
namespace: forum;

abstract class 
Text {

   public static function 
textToHtml($string ) {
      
$string stripslashes($string);
      
$string htmlentities($string);
      
$string nl2br($string);

   return 
$string;
   } 


PHP Code:
echo forum::Text::textToHtml($_POST['eingabe']); 
Reply
#14
(29.01.2009, 22:09)agent47 Wrote: dass is ja ne normale function, oop in php5 sähe dann so aus


Ich würde die Methode toHtml nennen, dass ein Text transformiert wird ist schon durch den Namen der Klasse klar.
Und richtig OOP ist das auch nicht, sondern eigt. wird die klasse nur als namensraum genutzt.

(29.01.2009, 22:23)agent47 Wrote: die syntax die du da jetzt meinst ist ja die der namensräume, damit hat das jetzt aber erstmal nix zu tun, das ist einfach eine statische funktion die überall auch ohne initialisieren der klasse in ein objekt verfügbar ist.
ab php 5.3 git es namensräume das würde das so aussehen:
PHP Code:
namespace: forum;

abstract class 
Text {

   public static function 
textToHtml($string ) {
      
$string stripslashes($string);
      
$string htmlentities($string);
      
$string nl2br($string);

   return 
$string;
   } 


PHP Code:
echo forum::Text::textToHtml($_POST['eingabe']); 

Ein Namespace wird in PHP ohne Doppelpunkt definiert. Und die Doppel-Doppelpunkte für den Zugriff auf einen Namenraum werden auch nicht genutzt. Es wird der von Windows bekannte Backslash ('\') genutzt.
Reply
#15
dann haben die das nochmal angepasst, mein letzter stand was das namespaces mit :: adressiert werden, so war es zumindest noch vor 2 monaten in nem tutorial dazu beschrieben
Reply
#16
PHP Code:
// ... entfehrnt weil die backslashes gelöscht werden (bsp 4) 
(Quelle: http://de2.php.net/manual/de/language.na...ltiple.php)

Sieht zwar scheiße aus aber gut, ich werde es nicht gebrauchen -.-

Achja und deine Text Klasse ist doch kein wirkliches OOP, besser wäre:

PHP Code:
class Text {
   private 
$string "";

   public function 
__construct($text) {
        
$this->string $text;
   }
   
   public function 
toHtml() {
      
$string stripslashes($this->string);
      
$string htmlentities($string);
      
$this->string nl2br($string);

   } 
   
   public function 
fetch() {
        return 
$this->string;
   }
}

// Beispiel:
$text = new Text("Ich lese keine Pornoheftchen ;)");
$text->toHTML();
echo 
$text->fetch(); 

Das ist OOP weil jetzt kannst du das ganze ganz bequem erweitern und den text anderst manipulieren Wink

Sorry für die schlechte formatierung, mein eclipse spinnt iwie grade oO

~a
Reply
#17
klar, war ja auch nur ein bsp.

das mit dem Backslash is wirklich blöd, aber wenigstesn bissel besser von statischen methoden und eigenschaften zu unterscheiden.
Reply
#18
So, ich habe mal wieder ein Anliegen und zwar geht es um Folgendes:
Ich würde gerne per PHP, VB oder VC++ ein Formular auf einem Server(also bei PHP auf einem anderen Server) ausfüllen und anschließend abschicken lassen. Als Beispiel: Das Programm ruf die Seite "http://www.die-staemme.de/register.php" auf, füllt dort das Formular aus und schickt es anschließend ab, sodass ich durch diese Anwendung eben einen neuen User erstellt habe.
Reply
#19
Mit <form method="POST" action="http://LINK">

Code:
<form method="POST" action="http://www.die-staemme.de/register.php">
    <p><input type="text" name="text1" size="20"></p>
    <p><input type="text" name="text2" size="20"></p>
    <p><input type="text" name="text3" size="20"></p>
    <p><input type="submit" value="Absenden" name="button"></p>
</form>

Musst ja halt noch das Formular anpassen
✝ RiP 
Weiter geht's  Cool
Reply
#20
Ah, genial, danke. Hätte gar nicht gedacht, dass das sogar per HTML machbar ist und dann noch so simpel, naja wieder was Neues gelernt.

EDIT: Wenn ich das jetzt aber z.B. per PHP und ganz ohne mein Zutun machen wollen würde, müsste im Formular ja noch ein "value=" rein, doch wie kann man das 'drücken' des Absenden-Buttons realisieren.
Reply




Users browsing this thread: 1 Guest(s)