Nutzen von Klassen und Funktionen

exitboy

Erfahrenes Mitglied
Hallo,

ich programmiere jetzt schon mehrere Jahre mit PHP und SQL auch CMSe, jedoch habe ich bisher noch nie gross eine Klasse oder eigene Funktionen gecoded, weil ich alles ohne - auch perfekt geloest habe (ok, perfekt ist relativ)

Hab mich zwar schon etliche Male mit dem Thema auseinander gesetzt, jedoch bekomm ich mich einfach nicht dazu, das umsetzen. Oder ich seh den wirklichen nutzen einfach nicht. Theoretisch ist es mir auch klar, wann ich Funktionen und Klassen nutzen kann ... nur oft geht das halt einfach auch mit includes einfach mehrfach zu nutzen, oder Variablen einfach abfragen und aendern ... um den Seitenaufbau z.B. zu aendern

Hat da jemand Tipps zum Umgang mit wie ich auf Funktionen und Klassen umsteige, sodass ich auch einen Nutzen davon habe und dies verinnerliche. Vielleicht fehlt mir auch einfach nur noch etwas Teilverstaendnis dabei ... . Oder die Projekte sind noch zu klein, obwohl ich das nciht wirklich glaube. Hatte von einer groesseren Community mit Messagesystem, Anmeldung und Gruppenverwaltung alles schon dabei, aber auch Datenbankadministration von mehreren Millionen Artikeln. Ging alles bis dato ohne.

Gruss und Danke.
 
Mh naja an Klassen ist nicht kompliziertes.

PHP:
class myclass()
{
  public $var = "test";

  function foobar()
  {
      echo "foobar() says: ".$self->var;
  }

}

$myclass = new myclass();
echo $myclass->var;
$myclass->foobar();
test
foobar() says: test


in der tutorial section findest du mindestens ein gutes tutorial ;)
 
Hallo @exitboy

Es gibt einfach nichts besseres als Klassen und Funktionen (=vor allem die sind göttlich ;) )
Willst du wirklich etwas größeres programmieren, dann kommst du nicht drum herum sie zu benützen.
 
da gebe ich Euch ja allen Recht, dass diese nuetzlich sind und auch toll, nur warum eine Klasse nutzen, wenn es auch ohne geht?

Oder vielleicht ist mir einfach der Nutzen noch nicht klar. Hab mir mal einige Systeme angeschaut. Auf mich hat es mehr die Wirkung, als ob ich dadurch um einen Code zu verstehen erstmal nen Grundueberblick ueber die Klassen (oder Dokumentationen) bekommen muss, eh ich mit etwas arbeiten kann. Waerend ich hingegen so ohne Klassen egal wo ich einsteige sofort alles klar verstehe ...

Hab z.B. in einem Buch Klassen stehen, die einfach nur ein Formular mit Klassenfunktionen erstellen. Da ist dann meine Frage gleich, warum nich einfach nur ne Funktion? Oder warum ueberhaupt erst ne Funktion, wenn es doch ne gute Schleife mit Variablenaenderung auch tut und diese dann immer nur included wird.
 
Zuletzt bearbeitet:
Ich persoenlich finde Klassen ueberaus praktisch (sonst haette ich wohl kaum ein Sourceforge-Projekt zum Thema...) da sie gekapselt eine gewissen Funktionalitaet darstellen.
Wenn Du Scripts immer wieder einbindest um den Code mehrfach auszufuehren erhoeht sich zum einen die Chance dass dieser Code recht abhaengig ist von dem Code der zuvor bereits abgelaufen ist, zum anderen duerfte dies auch negativen Einfluss auf den Speicherverbrauch des Scripts haben.
Eine Klasse bietet ihre Funktionalitaet unabhaengig von restlichen Code, sie erwartet lediglich die richtigen Parameter. Wie aber Variablen im Script heissen ist der Klasse egal, entsprechend ist die Wiederverwendbarkeit hoeher.

Ich wuerde dazu raten Dir einfach mal ein paar Klassen anzusehen.

Zum Thema Funktionen kann ich nur sagen dass es im Grunde aehnlich ist.
Eine Funktion die nicht mit global externe Variablen an Land zieht ist gekapselte Funktionalitaet und unabhaengig von Variablennamen im Script.
Zusaetzlich find ich es wesentlich eleganter eine Funktion aufzurufen als ein Script zu includen.

Klar, vieles laesst sich ganz ohne Klassen und Funktionen loesen, aber meiner Meinung nach ist vor allem die Kapselung von Funktionalitaet ein gewaltiger Vorteil, denn Code der einfach in andere Projekte uebertragbar sein soll laesst sich damit, meiner Meinung nach, wesentlich einfacher realisieren.
 
@exitboy
Hatte von einer groesseren Community mit Messagesystem, Anmeldung und Gruppenverwaltung alles schon dabei, aber auch Datenbankadministration von mehreren Millionen Artikeln. Ging alles bis dato ohne.

(Viele wege für nach Rom)

Der Vorteil daran ist das man Klassen induell einsetzen.Das bedeuted man erspart sich eine menge Arbeit.Da man die Klassen in andere Projekte auch einsetzen kann.

Bei include siehts da anderes aus du kanst zwar damit jede X belibige Datei einbinden. Aber dann haste den Nachteil das du den Datei-Inhalt erst umschreiben mußt um es auch in anderen Projekten einzusetzen.

Wenn wir mal schon bei den Klassen sind wie würdet ihr folgendes am besten Umsetzen.
Ihr hab eine Klasse aus der 100 oder mehrere Objekte instanziert werden. Wie würdet ihr nun diese vielen Objekte verwalten (Array, oder jedes Objekt einen eigene Varible zuweisen unsw.)
Wie findet ihre genau dann das Richtige Objekt was ihr Ansprechen wollt. Bsp. um Eigenschaften zu änderen oder Methoden aufzurufen.(Alles immer durch eine Schleife laufen lassen?)


Mfg Splasch
 
Ich denke hier stellt sich erstmal die Frage warum denn so viele Instanzen benoetigt werden

Hehe ja im Grunde kommt man meißten mit ein paar aus.

Aber vor kurzen gings hier mal im Forum um ein Browsergame und dort wurde über eine Klasse diskudiert. Mit der man eben Iteams bwz waffen erstellen kann und diese einer Figur zuweißt.(Kleidung,waffen,defensive rüstung unsw,)

Nun wen man aus so einer Iteam klasse Objekte inzantziert. Werden es sehr viele sein da das ja ständig im laufe des Spiel erweitert wird. Also ich kann mir schon gut vorstellen das man 100 oder mehre Kleidungstücke braucht mit verschiedenen eigenschaften.
(Bsp Sims oder andere games)

Mfg Splasch
 
Ich möchte noch kurz das Stichwort MVC in den Raum werfen.

Mit einem MVC Framework wie z.b. von Zend oder CodeIgniter spart man sich unendlich viel arbeit. Und wie ich für meinen Teil festgestellt habe, bemerkt man auch erst dabei, wie sinnvoll klassen eigentlich sind!

Bei mir geht nichts ohne klassen. Nichtmal das einfachste Projekt.
Der Code ist einfach fein söuberlich getrennt und kann viel einfacher bearbeitet werden!

Versuchs doch mal mit einem kleinen Framework, bzw MVC (nicht Zend, das kann warscheinlich zu viel). Wenn du wirklich Professionell programmieren will geht nichts ohne klassen!

PS: ZU deiner Frage warum klassen und nicht einfach ne sammlung von funktionen:
Nimm ein MVC. Du hast 2 Klassen/Controller: GB, Blog
GB::addEntry() <-- fügt einen eintrag ins gästebuch
Blog::addEntry() <-- fügt einen Eintrag in den Blog hinzu.
Die beiden addEntry() Methoden funktionieren natürlich völlig verschieden.

In der GB klasse stehen alle methoden/funktionen die zum gästebuch gehören und die sich vom blog unterscheiden.
Beispiel:
GB::addEntry(), GB::deleteEntry(), GB::answerEntry(),
Blog::addEntry, Blog::deleteEntry(), Blog::editEntry(), Blog::publishEntry

Du hättest alle Funktionen sauber getrennt und in einem guten Zusammenhang gebracht. Und dabei muss du doch nichts doppelt erledigen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück