E-Mail - Webentwicklung - SEO
Joomla - Virtuemart
E-Commerce
Und warum PHP?
PHP ist eine Hybridsprache. Man kann mit Funktionen arbeiten oder objektorientiert programmieren.
Mein kleines Portal ist komplett objektorientiert programmiert.
Ein Beispiel für ein
Kontaktformular
nicht objektorientiert aber mit
Funktionen wie " htmlspecialchars " gesichert.
Ein weiteres gutes Einsatzbeispiel sind die Teile der Website, die sich auf allen Seiten oder zumindest vielen, wiederholen. Wie z.B. das Menü, Teile des Headers oder ein Footer.
Hat man größere Projekte, sollte man überlegen, eventuell objektorientiert zu arbeitet.
Ein weiterer großer Vorteil von PHP ist die relativ einfache Anbindungsmöchkeit von Datenbanken.
PHP: OOP oder Prozeduren und Funktionen?
Was ist der Unterschied zwischen prozeduralem und objektorientiertem Programmieren?
In großen Projekten verliert man sehr schnell den Überblick über seine Variablen- und Prozedurbezeichnungen. Der Quellcode muß kopiert und angepaßt werden.
Hier kommt OOP zum Einsatz.
Eine gute Planung der Klassen im Vorfeld ist wichtig. Nur so sind spätere
Änderungen möglich, ohne die gekapselte Funktionalität der Klasse
zu beeinträchtigen.
Wenn man die Schnittstellen und das zu erwartende
Ergebnis einer Klasse nicht verändert, kann man die Klasse ohne Probleme optimieren.
Durch den Einsatz von Objekten ist die Arbeit im Team einfacher. Die erstellten
Klassen können von anderen Programmierern wiederverwendet werden. Die Entwickler
müßen den Aufbau der Klasse nicht kennen. Sie müßen nur wissen,
wie sie die Eigenschaften und Methoden der Klasse für ihre Zwecke einsetzen
können.
Der Zugriff auf die Objektvariablen (Eigenschaften des Objektes) und die Prozeduren und Funktionen
(Methoden des Objektes) erfolgt in der Anwendung per Objektnotation:
Nachteil der der objektorientierten Programmierung:
Anwendungen die mit OOP entwickelt werden sind langsamer.
Fazit: Für kleinere Anwendungen ist es eventuell sinnvoller nicht mit OOP zu arbeiten.
Ist die Warscheinlichkeit hoch, dass das Projekt wächst, dann sollte man die Programmierung mit OOP durchführen.
PHP lernen - oop wichtige Punkte
- Um eine Klasse verwenden zu können, muß sie zuerst definiert und später
instanziiert (erstellt) werden.
Die Definition erfolgt mit dem Schlüsselwort " class " :class zeitschrift { ... } - Die Eigenschaften werden als normale Variablen definiert:
private $variable = ' PHP ' ;Variablen, welche als " private " definiert sind, können nur innerhalb der Methode geändert werden.
- Eine Methode sieht in der Definition wie eine Funktion aus:
public function lesen( ) ;
- Instanziiert wird die Klasse mit:
$php_zeitung = new zeitschrift ( ) ;
- Der Zugriff auf die Eigenschaften und Methoden eines Objektes wird mit:
Objektname->Methode ( ) oder Eigenschaft ;dargestellt. Ein Beispiel - Methodenaufruf aus unserer Klasse zeitschrift:echo $php_zeitung->lesen() ;
-
Methoden die Werte ändern nennt man üblicherweise wie die Eigenschaft,
nur mit einem vorangestellten " get " oder " set ":
public function setTitle ($title) { ... }
-
... " this " ist innerhalb eines Objektes immer der Bezug auf das Objekt selbst
$this->title = $title;
-
Ein Projekt enthällt in der Regel mehrere Klassen. Es entsteht eine Klassenhierarchie,
in der die untergeordneten Klassen von ihrer Elternklasse erben.
class Kindklasse extends Elternklasse { ... }
-
Wird in der erbenden Kindklasse eine Methode der Elternklasse definiert, ist die neue
Definition in der Kindklasse gültig.
Zugriffe auf Funktionen ... pardon, Methoden der Elternklasse sind mit dem Schlüsselwort
parent möglich:
echo parent::lesen() ;
-
Konstruktor und Destruktor:
Die Konstruktor - Funktion wird immer beim Instanziieren des Objektes ausgeführt:public function __construct() { ... }Im Konstruktor sollte alles stehen, was von Anfang an definiert werden soll.
Mit dem Destruktor löst man das Objekt auf:unset ($Objekt);
to be continued ...
Beispiel einer Klasse zeitschrift ( oop )
- <?php
- /**
- * Html-Teil mit Formular
- */
- <html>
- <body>
- <form action="<?php print htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="get">
- <input type="text" name="titel" size="20" /> Buchtitel eingeben
- <input type="submit" name="submit" value="Versenden" />
- </form>
- </body>
- </html>
- /**
- * Beispiel einer Klasse zeitschrift
- */
- class zeitschrift
- {
- private $title;
- public function setTitle($title)
- {
- /**
- * Die Variable "$title" wird an die Methodenvariable
"this->title" übergeben - */
- $this->title = $title;
- }
- public function getTitle()
- {
- /**
- Die Ausgabe erfolgt entweder über return ... oder wie in
- der Methode "lesen()" über "echo"
- */
- return $this->title = $title;
- }
- public function lesen()
- {
- /**
- Die Variable wird ausgegeben
- */
- echo $this->title;
- }
- }// Ende der Klasse
- /* Objekt bilden ( instanzieren ) */
- $php_zeitung = new zeitschrift();
- /* Eingabe vom Formular übernehmen */
- $php_zeitung->setTitle($_GET['titel'] );
- /* Ausgabe der Formulareingabe */
- echo $php_zeitung->lesen() ;
- /* Ausgabe der Formulareingabe */
- echo $php_zeitung->getTitle() ;
- ?>
Skript speichern: zeitschrift
Beispiel für try catch objektorientiert ( oop )
- <?php
- /**
- * Beispielcode für Exceptions mit try ... catch
- */
- class cAuto
- {
- var $strFahrzeug;
- var $intReifen;
- function __construct()
- {
- $this->intReifen = 4; //Defaultwert setzen
- }
- function setReifen($argIntReifen)
- {
- if (!is_int($argIntReifen))
- throw new Exception('Wrong argument type: '. $argIntReifen.'. <b>int</b> required.');
- if (($argIntReifen !== 4) && ($argIntReifen !== 8))
- throw new ReifenException('Falsche Anzahl Reifen. Es sollten 4 oder 8 sein.');
- $this->intReifen = $argIntReifen;
- }
- }
- class ReifenException extends Exception
- {
- function __construct($strMessage)
- {
- parent::__construct($strMessage);
- }
- }
- $oMini = new cAuto();
- try
- {
- //$oMini->setReifen(5);
- $oMini->setReifen(5);
- }
- catch (Exception $e)
- {
- echo 'Allgemeiner Fehler: '.$e->getMessage();
- }
- catch (LegException $e)
- {
- echo 'Logischer Fehler: '.$e->getMessage();
- }
- ?>
Skript speichern: try_catch
Formular mit Fehlerbehandlung - selbstreferenzierend (selbstaufrufend)
- <?php
- /**
- * Demo Formular mit Fehlerbehandlung -
- * selbstreferenzierend(selbstaufrufend)
- **/
- $arrErrors = validateForm($_POST);
- showForm($arrErrors, $_POST);
- else
- processForm($_POST);
- }
- else {
- showForm($arrErrors, $_POST);
- }
- function showForm($arrErrors, $arrPostedData)
- {
- echo <<<STARTHTML
- <html>
- <head>
- <meta http-equiv="Content-Language" content="en" />
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Formular</title>
- <style type="text/css">
- .ok {margin:2px;}
- .error {border:solid 2px red;
- margin:4px;}
- </style>
- </head>
- <body>
- <h1>Kostenstelle</h1>
- STARTHTML;
- echo 'Fehler in Eingabe:'.BRLF;
- }
- echo <<<ENDHTML
- </body>
- </html>
- ENDHTML;
- }
- function inputText($strLabel, $strName, $strValue, $arrErrors) {
- $strClass = 'ok';
- $strError = '';
- $strClass = 'error';
- $strError = ' ('.$arrErrors[$strName].')';
- }
- return "{$strLabel}: <input type='text' name='{$strName}' value='{$strValue}' class='{$strClass}' />{$strError}";
- }
- function openForm($strAction, $strMethod) {
- return "<form action='{$strAction}' method='{$strMethod}'>";
- }
- function submitForm($strValue = 'Absenden') {
- return "<input type='submit' value='{$strValue}'>";
- }
- function closeForm() {
- return '</form>';
- }
- function validateForm($arrPostData) {
- $arrErrors['name'] = 'Kein Wert eingegeben.';
- }
- else {
- // weitere Checks
- }
- $arrErrors['vorname'] = 'Kein Wert eingegeben.';
- }
- else {
- // weitere Checks
- }
- $arrErrors['kostenstelle'] = 'Kein Wert eingegeben';
- }
- else {
- && ($arrPostData['kostenstelle'] > 0)
- && ((int) $arrPostData['kostenstelle']) == $arrPostData['kostenstelle']) {
- // Weitere Checks...
- }
- else
- $arrErrors['kostenstelle'] = 'Falscher Wert. Muss ganze Zahl > 0 sein.';
- }
- return $arrErrors;
- }
- function processForm($arrPostedData) {
- echo 'Vielen Dank für die Eingabe:'.BRLF;
- // ...weiter verarbeiten
- }
- ?>
Skript speichern: Formular
Kontaktformular gesichert mit htmlspecialchars
Das Script zum download in einem neuen Fenster dazu.
Wenn ihr diese Website gut findet unterstützt sie bitte, indem ihr folgenden Link in eure Website einfügt:
<a href="http://www.kajamogo.de/php.php" title="kajamogo: Webprogrammierung"> Webprogrammierung mit PHP </a>
Vielen Dank !!!
Inhalt dieser Seite:
Etwas in eigener Sache.
Das VirtueMart-Buch zum beliebten Joomla-Shop
Bei [ Amazon ] .
Hier der Text vom Verlag :
Millionen Websites laufen mit dem Content-Management-System
Joomla! und das Shopsystem VirtueMart setzt auf Joomla! auf.
Der Riesenvorteil: Wer bereits eine Joomla!-Website betreibt, kann
sie mit VirtueMart um einen Web-Shop erweitern.
Und wer nur eine
zuverlässige und dabei kostenlose Shoplösung sucht, ist mit
VirtueMart ebenfalls an der richtigen Adresse.
Der E-Commerce-Spezialist Goetz Nemeth zeigt in diesem Buch, wie
Sie Ihren Shop mit VirtueMart einrichten, Produkte und die
dazugehörigen Informationen einstellen, die Shopdaten bearbeiten,
Zahlungsmethoden zur Verfügung stellen und vieles mehr.
Darüber hinaus demonstriert er, wie Sie den Shop mit der
kostenlosen Warenwirtschaftslösung JTL-WaWi verknüpfen
können.
(Falls Fehler in den Skripten sind, bitte mich informieren! Danke!)
PHP und OOPPHP lernen - OOP wichtige Punkte
PHP Kontaktformular
Kontaktformular mit Fehlerbehandlung - selbstreferenzierend (selbstaufrufend)
PHP Kontaktformular gesichert mit htmlspecialchars
Fehler abfangen mit try catch
Beispiel für try catch
PHP OOP eine Klasse
Beispiel einer Klasse "zeitschrift"