Willkommen beim

PHP Hypertext Preprocessor

Einsteigerabend der ELUG

in der Villa-Vogelsang


<?php echo date ("d-m-Y", time()); ?>

= 20-03-2001


Beipackzettel (c) Andre Gellert , fehlerhaft und ungetestet


PHP = PHP Hypertext Preprocessor

1994 von Rasmus Lerdorf erdacht,

1995 als Personal Home Page Tools released und noch

1995 als PHP/FI Version 2.0 erschienen

FI = Form Interpreter Addon Paket zu PHP Tools

1997 von Zeev Suraski und Andi Gutmans komplett recoded und als 3.0 erschienen

03.2000 Release Candidate 1 zu Version 4.0

BSD-Lizenz ( php3 noch dual-licensed BSD/GPL)
Nachtrag: http://www.php.net/license

Q. Why is PHP 4 not dual-licensed under the GNU General Public License (GPL) like PHP 3 was?

A. GPL enforces many restrictions on what can and cannot be done with the licensed code. The PHP developers decided to release PHP under a much more loose license (BSD style), to help PHP become as popular as possible.


Entwicklungsstand:

Entwicklung immer noch parallel :

PHP Version 3 wird immer noch weiterbetrieben

PHP 4.0.5 RC1 freigegeben

aktuell sind : PHP 3.0.18 und Patch Level 1 von PHP 4.0.4










Gute Sprachen für das Web:

PHP

Python

Perl

JSP

Pascal

uvm.




Nicht Gute Sprachen für das Web:

ASP





Literatur:

http://www.php.net/books.php


 

 

<html>
<head>
<title>Willkommen Test</title>
</head>
<body>
Ausgabe von aktueller Uhrzeit und Datum: <?php echo date ("l m-d-Y H:i", time()); ?> <br>
</body>
</html>

Ausgabe von aktueller Uhrzeit und Datum: Tuesday, 03-20-2001 20:12



PHP 3 vs. PHP 4

nahezu 100% code-kompatibel

PHP 4 :

bessere Garbage-Cleanup

Sessions werden nativ unterstützt (früher meistens über phplib)

COM/DCOM support unter Windows,

verbesserte Eingliederung in Nicht-Apache http Dämonen

+ viele besserungen , die unmerklich in PHP hineinwandern: Flash , PDF, XML, Array Handling ...

Mit PHP4 kam auch Zend:

kommerzielle Code-Engine für optimierten sichereren Produktionsbetrieb von PHP

Cachen von Ergebnissen zur extremen Beschleunigung von Aufgaben

Zend IDE 1.1 in Arbeit,

Zend Optimizer zum freien Download

kommerzieller Support

http://zend.com/zend/technology.php



Unterstützte Datenbanken Nachtrag:

Adabas DIngresOracle (OCI7 and OCI8)
dBaseInterBaseOvrimos
EmpressFrontBasePostgreSQL
FilePro (read-only)mSQLSolid
HyperwaveDirect MS-SQLSybase
IBM DB2MySQLVelocis
InformixODBCUnix dbm



/* Kommentar
ueber mehrere Zeilen */
// einzeiliger Kommentar

1. <?php echo "hallo"; ?>
2. <? echo "hallo"; ?>
3. <% echo "hallo"; %>
4. <script language="php">
  echo "hallo";
  </script>

 

Konstanten:

define ("KONSTANTE1","Hallo");
echo KONSTANTE;
undefine ("KONSTANTE");

__FILE__ Dateiname des Skripts
__LINE__ aktuelle Zeile im Skript

Variablentypen und automatische Typenkonvertierung

integer

Operatoren: + - * / %

Kombinierte Operatoren: += -= *= /= %= .= 

Verschachtelung:

$a=($b=4)+5;

Bitoperatoren: & | ~

$a = 255;

$b=$a & 128; // == 128

$b=$b | 1; // == 129

logische Operatoren:

AND OR XOR
! = nicht 
&& sowohl als auch
|| entweder oder

Vergleichende Operatoren:
== != < > <= >=

 

if (10>9 && 10<100)
{
 echo "wird angezeigt";
}
else echo "wird niemals angezeigt";

$a=1;
$b=2;
Function Addition ()
{
 $b=$a+$b;
}
Addition();
echo $b; // FALSCH

 

 

 

 

Function Addition ()
{
 global $a,$b;
 $b=$a+$b;
}
Addition();
echo $b; // Ausgabe von 3

Alternativ:

$GLOBALS["b"]=GLOBALS["a"]+GLOBALS["b"];

phpinfo(); listet andere globale Variablen

 

 

double  (ähnlich Real)
$a=1;
$a+=2.30;
echo $a;
printf ("%2.2f",$a); // "03.30"

printf ("%2d",$a); // "03";

string 0-32768 Chars

array

Typenkonvertierung erzwingen:

$a=10;
$b=(double)$a;
$b=(string)$a;

settype($b,"double");

oder string,integer,array,object anstatt double...

$a=2;
$type=gettype($a); // $type = = integer

gettype liefert "unknown type" für ungültige Typen

if (is_integer($a)) echo ("Ist ein Integer");
...ebenso is_double, is_string, is_array, is_object

object

Initialisierung


$email[]="elug@elug.de"

$email[]="elug-announce@elug.de"

$email[0]="elug@elug.de"

$email[1]="elug-announce@elug.de"

$email=array("elug@elug.de","elug-announce@elug.de");



$email[email1]="elug@elug.de"

$email[email2]="elug-announce@elug.de"

$email=array("email1"=>"elug@elug.de","email1"=>"elug-announce@elug.de");


Mehrdimensional:

$a_2dimensional_array=array(

"typ1"=>array("a"="eins","b"="zwei","c"="drei"),

"typ2"=>array(1,2,3),

"typ3"=>array("auch_eins",5=>"pizza","vegetarisch")

);


Durchlaufen eines Arrays mit next(), prev() oder mit each() , Sortierfunktionen a la sort(), asort(), rsort()... 8 Funktionen zum Sortieren vorhanden


Datenbanken:

Sehr ähnliche Funktionen in den Datenbankschnittstellen
Einfache Portierung von Quelltext
Sinn-Verwandte Datenbanken ähneln sich besonders (MySQL,mSQL)

Beispiel select von MySQL

Connect zur Datenbank:

mysql_connect("databasenode.domain.com","username","passwordxy");
mysql_pconnect("databasenode.domain.com","username","passwordxy");
-> Persistent connect , Dauer einer Connection Alive Time über php.ini konfigurierbar

mysql_select_db("elug-test-db");
$querystring='select * from emails where name="'.$name.'"';
$result=mysql_query($querystring);
echo mysql_num_rows($result)." Zeilen gefunden.";
for (i=0,i<mysql_num_rows($result),i++)
{

}

$querystring='select * from emails where name="'.$name.'"';

$querystring='delete from emails where id="'.$id.'"';
echo $querystring.'<hr>';
$result=mysql_query($querystring);

$updatestring='update // works not if (mysql_affected_rows()<>1) { echo "unable to delete ".$id;} else { echo "deleted member ".$id;}
 

Beispiel select von PostgreSql

Sessions



 

Klassen:

Beispiel aus dem PHP Manual

<?php

class Einkaufswagen {

var $produkte; // Produkte in Ihrem Einkaufswagen

// Füge dem Einkaufswagen $anzahl Artikel der Sorte $artnr zu

function fuege_hinzu ($artnr, $anzahl) {

$this->produkte[$artnr] += $anzahl;

}

// Nimm $anzahl von Artikel wieder aus dem Einkaufswagen

function nimm_heraus ($artnr, $anzahl) {

if ($this->produkte[$artnr] > $anzahl) {

$this->produkte[$artnr] -= $anzahl;

return true;

} else {

return false;

}

}

}

?>

In diesem Beispiel wird eine Klasse "Einkaufswagen"definiert. Sie besteht aus einem assoziativen Array von

Produkten im Einkaufswagen und zwei Funktionen zum Zufügen und Entfernen von Einkäufen.

Klassen sind Typen, dass heisst die Blaupausen für realle Variablen. Um sie zu nutzen, muß zunächst eine Variable mit

dem Operator new angelegt werden.

$einkaufswagen = new Einkaufswagen;

$einkaufswagen->fuege_hinzu("10", 1);

Hier wird das Objekt $einkaufswagen aus der Klasse Einkaufswagen geschaffen. Dann wird die enthaltene Funktion

fuege_hinzu() aufgerufen, um ein Produkt mit der Artikelnummer 10 in den Einkaufswagen zu tun.

Klassen können ebenfalls Erweiterungen von anderen Klassen sein. Die erweiterte, oder auch abgeleitete Klasse

enthält alle Funktionen der ursprünglichen Klasse, und dazu die eigenen Ergänzungen. Das geschieht mit dem

Schlüsselwort "extends". Mehrfachvererbung wird von PHP nicht unterstützt.

class Mein_Einkaufswagen extends Einkaufswagen {

var $besitzer;

function setze_besitzer ($name) {

$this->besitzer = $name;

}

}

In diesem Beispiel wird eine Klasse Mein_Einkaufswagen definiert. Sie enthält alle Funktionen der Klasse

Einkaufswagen, eine zusätzliche Variable $besitzer und die zusätzliche Funktion setze_besitzer(). Man kann den

Einkaufswagen auch weiterhin wie oben erzeugen, nur kann man jetzt auch den Besitzer setzen oder herausfinden. Die

alten Funktionen der Klasse Einkaufswagen können ebenfalls weiterverwendet werden.

$meinkaufswagen = new Mein_Einkaufswagen; // Kreiere einen Einkaufswagen

$meinkaufswagen->setze_besitzer ("kris"); // Name dieser Klasse

print $meinkaufswagen->besitzer; // schreibe den Namen des Besitzers

$meinkaufswagen->fuege_hinzu ("10", 1); // (Siehe oben, vererbt

// von Einkaufswagen)

 

 

Links

http://www.php.net , besonders www.php.net/manual

http://www.zend.com

http://www.php-center.de

http://rent-a-phpwizard.de

http://www.dynamic-webpages.de

http://php-homepage.de

http://www.koehntopp.de/php die beste FAQ

http://reeg.net Tutorial "Datenbank, mySQL und PHP"

Englische Seiten:

http://www.phpbuilder.com

http://www.devshed.com/Server_Side/PHP  Developer Shed

http://www.phpwizard.net


Tools:

http://www.phpwizard.net/projects/phpMyAdmin/index.html

http://www.greatbridge.org/project/phppgadmin


Interessante Projekte

http://www.phpnuke.org  Communityplattform nach Stil von slashdot.org

http://www.midgard-project.org  Content Management System

http://gtk.php.net   GNU Toolkit Bibliotheken