Objekt-Orientierung in PHP

Allgemeine Diskussionen, sonstige Fragen und Plauder-Ecke

Beitragvon fx4u » 08.08.2008 20:40

OK...also ich waere auch dafuer :wink:

Ich habe auch mal 'n paar Jahre 'n Forum moderiert, in dem es dann nach und nach (ging um einen speziellen Lenkdrachen) ruhiger wurde.

Als ich das Forum dann mangels Teilnahme vom Netz nehmen wollte, stellte sich heraus, dass die wenigen Benutzer es trotzdem lieb gewonnen hatten.

Meine erste Frage im Plauerbereich waere dann...wie kann ich endlich den Einstieg in Objektorientiere Programmierung (PHP) finden...mit Autos oder Hunden ists zwar plakativ aber man programmiert so selten Hunde :? Gibts's 'ne gute Lektuere fuer jemanden, der sich leidlich mit PHP auskennt...

Du siehst..ich mach jetzt einfach mal aus dem Bereich 'ne Plauerecke :-D
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Advertisement



Registrieren Sie sich, um diese Anzeige nicht mehr zu sehen!
 

Beitragvon Dodwin » 09.08.2008 13:53

Du könntest z.B. einfach eine Userverwaltung machen, also so in etwa:

Code: Alles auswählen
class Users {
  var $user_list = false;
  function Users {
    require('user_list.inc.php');
  }
  function add {
    ...
  }
  ...
}


Die Datei könnte ein Array der User mit entsprechenden Rechte enthalten.
Dann kannste das später so nutzen:
$users = new Users();
$users->add('fx4u');

Damit habe ich zumindest meinen Einstieg in OOP gemacht ;)

Ist ein sehr einfaches Beispiel, aber vielleicht hilft's dir ja.
Dodwin
Engagiertes Mitglied
 
Beiträge: 144
Registriert: 25.03.2008 17:56

Beitragvon fx4u » 09.08.2008 17:30

Hi Dodwin,
vielen Dank fuer deine Antwort.

Ich glaube, mein Problem liegt u.a. im grundsaetzlichen Verstaendnis darin, wann ich die objektorientierten Moeglichkeiten einsetze. In meiner zweimonatigen Schulung zum Thema PHP (drei Jahre her) habe ich vieles gelernt, was ich heute gut bei diversen Kunden gebrauchen kann, aber eben nichts von den neuen Moeglichkeiten.

Bisher habe ich Eingabemoeglichkeiten (Formulare) und Ausgabemoeglichkeiten (meist Tabellen) sowie Moeglichkeiten, Datensaetze zu veraendern. Das geschieht natuerlich in Verbindung mit einer Datenbank.

Nun soll ich Objekte erstellen...und Instanzen...aber wie speichere ich den Kram weg...ich hab mir zu dem Thema 'n Buch gekauft "PHP Objektorientiert" von Peter Lavin....faengt super nett und locker an und auf einmal wirds derbe trocken.

Ich lerne am Besten an Problemen...zur Zeit sitze ich an einer Bestellverwaltung fuer eine Firma. Die Benutzer geben die zu bestellenden Artikel ein (mit autocomplete ueber die in der DB vorhandenen Artikel), es gibt verschiedene Bestellstati (bestellen/bestellt/vorhanden/Rueckstand) und natuerlich werden die Benutzer erfasst, die die Datensaetze erstellt bzw. editiert haben.

Thumbnails der eingegebenen Artikel werden dargestellt sowie EKs, VKs und Hersteller/Lieferanten werden automatisch uebernommen. Es lassen sich dann per Knoptdruck Bestellmails zu den einzelnen Lieferanten generieren, wo natuerlich die Anzahl und die Artikelbezeichnungen sowie Mailadresse und Fuss automatisch eingefuegt werden. Der Bestellstatus aendert sich dann automatisch und das Datum der bestellung wird hinterlegt.

Das ganze schaut dann so aus...http://www.fx2me.de/downloads/fxinfo.jpg
Ist optisch noch kein Leckerbissen...aber das kommt zum Schluss.

Laeuft auch alles ganz prima und ist super praktisch, weil die Geschichte vorher in einer Excel-Tabelle gepflegt wurde, die natuerlich immer nur einer bearbeiten konnte.

Nun versuche ich schon vieles in Funktionen auszulagern...dank Scriptly wird das auch immer komfortabler...trotzdem nervt mich mein Spaghetti-Code und ich hatte die Hoffnung, dass mit OOP alles viiiiel besser werden wird...nur wie?

Vielen Dank an alle, die sich mein elend langes Geschreibsel bis hierhin durchgelesen haben :-)
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Beitragvon Dodwin » 10.08.2008 10:21

Ist doch eine schöne Sache die du da hast, da kannst du OOP gut benutzen.

Ich stelle mir das so vor:
Am Anfang jeder Seite steht:

Code: Alles auswählen
$users = new Users();
if (!$users->allowed('bestellsystem'))
  die('keine rechte');


Die dazugehörige Klasse würde etwa so aussehen:

Code: Alles auswählen
class Users {
  var $user_name;
  var $list;
  function Users() {
    require('inc/user_list.php');
    $this->list = $user_list; // array in der Datei
    // es wird geprüft welcher User gerade eingeloggt ist, evtl. mit einer weiteren Funktion check_cookie()
  }
  function allowed($cat) {
    if ($this->$user_list[$user_name][$cat])
      return true;
    return false;
  }
}


Damit könnte zu Beginn der Seite gecheckt werden, ob der User überhaupt die Rechte besitzt auf den Teil des Systems zuzugreifen.


Für den Hauptteil des Bestellsytems wäre dann sowas denkbar:

Code: Alles auswählen
$system = new Bestellsytem();

while ($system->line()) { // line() würde dafür sorgen, dass die Datensätze (wahrscheinlich aus einer DB) eingelesen wird
  echo '<tr><td>'.$system->val('date').'</td><td>'.$system->val('id').'</td><td>'.$system->val('id').'</td>...</tr>'; // val(...) würde die entsprechende Spalte in der Datenbank auslesen
}


Damit dürfte es schon ziemlich aufgeräumt werden... ;)
Dodwin
Engagiertes Mitglied
 
Beiträge: 144
Registriert: 25.03.2008 17:56

Beitragvon fx4u » 10.08.2008 19:21

Hi,
danke fuer deine Geduld und das Beispiel...anhand solcher Beispiele kann ich mich etwas entlang hangeln...parallalel dazu werd ich mein Buechlein weiter lesen.

Gibt es 'ne Buchempfehlung "PHP OOP fuer Newbies" oder so?
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Beitragvon Dodwin » 10.08.2008 20:19

Also ich hab's ohne Buch geschafft ;) , aber bei sowas würde ich sowieso empfehlen: Learning by Doing

Du kannst dir ja mal Programme anschauen, die bereits Klassen benutzen (irgendwelche einfachen CMS, o.Ä.).

Ansonten würde ich dir diese zwei Seiten ans Herz legen:
http://www.php.net/manual/de/language.oop5.basic.php
http://tut.php-q.net/klassen.html

Die zweite Seite ist vom Ansatz her etwas unverständlich (wer programmiert schon Meerschweinchen?) aber im Prinzip wird der Aufbau einer Klasse ganz gut erklärt

Viel Glück,
Dodwin
Dodwin
Engagiertes Mitglied
 
Beiträge: 144
Registriert: 25.03.2008 17:56

Beitragvon fx4u » 11.08.2008 22:51

Hi Dodwin,
Also ich hab's ohne Buch geschafft

OK...das ist ein Anreiz fuer mich :)

Die Meerschweinchen-Geschichte habe ich mir gestern angeschaut...er erklaert das ganz nett....

Aber letztendlich hast du Recht...lerning by doing...
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Beitragvon Ray » 12.08.2008 10:26

Das Buch habe ich übrigens auch, komme da mit aber nicht so gut zurecht. Ich denke an einem bestimmten Projekt lernt man es am besten. Werde mir mal einen entsprechenden Auftrag an Land schaffen ;)
Dem ist nichts hinzuzufügen!
Der RAY.
Ray
Sehr engagiertes Mitglied
 
Beiträge: 272
Registriert: 29.03.2007 13:04
Wohnort: Köln

Beitragvon fx4u » 12.08.2008 10:47

Hi Ray,
hab bei Amazon im Nachhinein gelesen, dass damit auch andere nicht zurecht kommen...ich komme irgendwie nicht ueber Seite 27 hinaus...

Mich interesseiren keine Begriffsdefinitionen - ich brauche halt praxisorientierte Beispiele...hab gestern noch 'ne MySQL-Klasse gefunden und leicht angepasst...damit finde ich vielleicht 'n Einstieg...nebenbei muss ich natuerlich noch etwas arbeiten und so zieht sich der Lernprozess etwas...
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Beitragvon Ray » 12.08.2008 11:37

fx4u hat geschrieben:nebenbei muss ich natuerlich noch etwas arbeiten und so zieht sich der Lernprozess etwas...


Das ist das große Problem, außer man hat wirklich ein Projekt, an dem man das erlernen kann. Dann allerdings, darf man sich keine Gedanken mehr machen, was man so pro Stunde verdient ;)
Dem ist nichts hinzuzufügen!
Der RAY.
Ray
Sehr engagiertes Mitglied
 
Beiträge: 272
Registriert: 29.03.2007 13:04
Wohnort: Köln

Beitragvon fx4u » 12.08.2008 12:54

Dann allerdings, darf man sich keine Gedanken mehr machen, was man so pro Stunde verdient


Oh ja...das stimmt...den Kunden das Lehrgeld zahlen lassen kommt nicht so gut :)

Mein letztes groesseres Projekt habe ich dreimal umgeschrieben, bis ich mit dem Quellcode einverstanden war.

Hab ganz normal begonnen...spaeter dann moeglichst viel in Funktionen ausgelagert und beim dritten Anlauf nochmals mehr in Funktionen ausgelagert...deshalb bin ich auch so gluecklich ueber die neue Funktionalitaet von Scriptly!
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Beitragvon Leuchte » 04.09.2008 21:13

Hi,

ich bin jetzt nicht der Geek in Sachen PHP, aber das was ich kann, habe ich mir selbst - fern von Büchern - beigebracht.

Ich finde, man lernt am Besten, wenn man sich etwas vornimmt zu erstellen. Ich arbeite z. B. gerade an einem CMS. Die Probleme, auf die ich stoße, löse ich durch PHP-Dokus oder Foren oder schaue mir Open Source Sachen an um dahinter zu kommen, wie andere 'mein Problem' gelöst haben.

Objekt-orientiert schreibe ich auch noch nicht lange, aber selbst in der kurzen Zeit (1 - 2 Monate) finde ich es schon praktischer, als die übliche prozedurale Programmierung. Ich teile meine Klassen in (Arbeits)bereiche ein und die ganze Struktur wirkt schon beim Aufbau logischer. Ausserdem hat es den Vorteil, dass man seine Klassen auch für andere Projekte nutzen kann; mit evtl. nur wenigen Veränderungen - wenn überhaupt. Mit einer kleiner Klassensammlung kann man sich viel Arbeit sparen (anstatt Mega-Code von einer Datei in die andere zu schieben, bindet man einfach die Klasse ein und ruft sie auf).

Auch ich bin noch in der Lernphase was OOP angeht, aber ich bin schon jetzt begeistert. Learning by doing kann ich nur empfehlen.

André
Leuchte
Interessiertes Mitglied
 
Beiträge: 21
Registriert: 03.09.2008 20:15
Wohnort: Duisburg

Beitragvon fx4u » 04.09.2008 21:23

Hi André,
vielen Dank fuer den Zuspruch...dann hab ich ja noch Hoffnung, es auch irgendwann zu kapieren.

Du arbeitest an einem CMS...gibts da schon Sichtbares?

Wie bei Editoren versuche ich auch bei CM-Systemen ab und an mal was Neues zu testen...obwohl...beim Editor bin ich glaube wohl am Ziel angelangt :wink:
Viele Gruesse
Oliver
fx4u
Sehr engagiertes Mitglied
 
Beiträge: 229
Registriert: 27.11.2007 10:37
Wohnort: Berlin

Beitragvon Leuchte » 04.09.2008 22:20

Hi Oliver,

mir kommt es so vor, als wenn ich schon jedes CMS getestet habe, was es auf dem Markt gibt :D Entweder waren mir die Systeme zu überladen mit Funktionen die ich nicht brauche oder sie brauchen eine Einarbeitungszeit von gefühlten 3 Jahren.

Aus diesem Grund habe ich mich 2006 dazu entschlossen, selbst ein CMS ganz nach meinen Bedürfnissen zu schreiben - und für mich. Nachdem es danach einige Anfragen gab, habe ich mir überlegt, es öffentlich zu machen. Aber bisher gibt es aufgrund von Zeitmangel (ich habe 2 kleine Kinder :D) keine veröffentlichte Version.

Zudem habe ich mich entschlossen, das gesamte System von Grund auf neu zu schreiben (u. a. objekt-orientiert). Die "alte" Version kann man über meine Website www.leuchte.net betrachten. Die neue Version befindet sich im Anfangsstadium und es wird noch ein Weilchen dauern, bis es mal eine installierbare Beta geben wird.

Features (so ist es jedenfalls geplant :D):
* schnelles, leichtes Templatesystem
* Mehrsprachigkeit
* komplett Modular
- das nackte CMS kann so gut wie nichts als Module in sich aufzunehmen -> man nutzt das, was man wirklich brauch
* für nichts muss man am Code rumwerkeln
- alles wird DAU-sicher online administrierbar sein -> Jederman-CMS

Aber wie gesagt, bis es mal eine Spruchreife Version gibt, wird noch viel Wasser den Rhein runterfliessen

André
Leuchte
Interessiertes Mitglied
 
Beiträge: 21
Registriert: 03.09.2008 20:15
Wohnort: Duisburg

Beitragvon Ray » 05.09.2008 07:44

Leuchte hat geschrieben:Ich finde, man lernt am Besten, wenn man sich etwas vornimmt zu erstellen.


Mein Worte ;)

Wie schon mal erwähnt ist hier das "Problem", dass man einen Mittelweg finden muss zwischen dem Zeitaufwand ein Projekt zu erstellen und der Zeit, die einem ein Kunde vorgibt, wann etwas fertig sein muss. Ich kann dem Kunden ja kaum sagen, "dauert etwas länger, weil ich das noch Lernen muss". ;)

Schwierige Sache, aber wenn man es dann einmal geschafft hat, hat man eine Menge gelernt ;)
Dem ist nichts hinzuzufügen!
Der RAY.
Ray
Sehr engagiertes Mitglied
 
Beiträge: 272
Registriert: 29.03.2007 13:04
Wohnort: Köln

Nächste

Zurück zu Off-Topic



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron