Introduction to PHP Development with IDS

Preview:

DESCRIPTION

I13. Introduction to PHP Development with IDS. Jean Georges Perrin IIUG. Tuesday, October 4 th 2006 • 16:15 – 17:15. Platform: IDS, PHP. Agenda. Who am I? Architecture Requirements PHP Functions vs. PDO Your first application using the Command Prompt - PowerPoint PPT Presentation

Citation preview

Introduction to PHP Development with IDS

Jean Georges PerrinIIUG

I13

Tuesday, October 4th 2006 • 16:15 – 17:15.

Platform: IDS, PHP

2

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

3

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

4

Who am I?

• My Unix box usually answers…

5

Who am I (outside of a Unix box)?

• Jean Georges Perrin

• Development tools (xGL, Java EE, PHP)

• Works with Informix products since ’97

• IIUG board member since ’02

• Lives in Strasbourg, France

6

A little more…

• Application developer, started with Visual Basic, in the early 90s

• In the web since 1994

• Move to 4GL in 1997

• Goals:• Webizing all things I touched (business apps,

catalogs and i-4GL…)• Find the ease of use of Visual Basic

7

And you…

• Who knows 4GL?

• Who knows Java?

• Who thinks Java is difficult?

• Who knows PHP?

• Who thinks PHP is easy?

• Who knows .net?

• Who went to my Java lecture earlier this week?

8

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

9

Architecture

DataApplicationDatabase

Driver

10

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

11

Requirements

• #1 - IDS (from v7.x, but also works on OnLine and SE)• Where: www.iiug.org, www.informix.com

• #2 - PHP (PHP v5.1.4)• Where: www.php.net

• #3 - PDO driver• Where: pecl.php.net , pecl4win.php.net

• #4 - Option: Eclipse (v3.2.0)• Where: www.eclipse.org

12

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

13

A few words on PHP’s history

• PHP stands for “PHP Hypertext Processor”

• PHP is currently v5

• Not well accepted by “serious” company

14

<?php

function main() { echo ("Hello, world...");}

main();?>

PHP

• Hello, world… in PHP

• Use of “PHP CLI”

• Code snippets:<?php echo "Hello, world...";?>

Source code is between <?php … ?> markers

A function is a function…

“Hello, world…” is always the same, in any language…

fglpc + fglgo

DEMO

15

PHP Pros & Cons

• Procedural & Object Oriented (OO) development

• Event driven programming model

• User Interface (UI) & Business Logic (BL) tightly linked

• Open architecture, open standards

• General purpose development language

• Becoming a standard

• Looks like “hype” to some developers

16

4GL Pros & Cons

• Procedural development

• “Controlled” events

• UI and BL somehow separated (.per & .4gl)

• Proprietary solution

• Business apps development language

• Not a standard in industry

• Hard to attract new developers

17

4GL and PHP

• Weak typing• Assign an integer to a string

• Not case sensitive• Well almost… not for variables.

• 2 types of string• “parsed strings”• ‘unparsed strings’

18

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

19

Two ways to access data

• Function calls• ifx_* and ifxus_* functions

• PHP Data Objects (PDO)• Set of “static” methods• More standard• Not to be compared to “real data objects”• Support for SERIAL in cvs

20

PDO – The way to go

• Clearly the future of data access in PHP

• Standard way of talking to a database

• Use a connection string, for IBM Informix:

$db = new PDO("informix:host=xeo;service=1526;►database=stores_demo;server=ol_xeo;protocol=olsoctcp;►EnableScrollableCursors=1;DB_LOCALE=EN_US.8859-1“ /* connection string */ , "informix"/* user */ , "informix"/* password */);

21

Agenda

• Who am I?• Architecture• Requirements• PHP• Functions vs. PDO• Your first application using the Command

Prompt• Your first application using Eclipse• Your first web application

22

Understanding php.ini

• Convenient way to “extend” PHP.

• Specify you want to use:• PDO• PDO Informix

…extension=php_pdo.dllextension=php_pdo_informix.dll…

DEMO

23

Your first application using the Command Prompt• Full source code (copy / paste):<?php$i = 0;

$db = new PDO("informix:host=xeo;service=1526;►database=stores_demo;server=ol_xeo;protocol=olsoctcp;►EnableScrollableCursors=1;DB_LOCALE=EN_US.8859-1“ /* connection string */ , "informix"/* user */ , "informix"/* password */);

$rs = $db->query("SELECT * from customer");$colCount = $rs->columnCount();

for ($i = 0; $i < $colCount; $i++) { $meta = $rs->getColumnMeta($i); echo ($meta['name'] . "|");}echo ("\n");

24

Your first application (2)foreach ($rs as $row) { for ($i = 0; $i < $colCount; $i++) { echo ($row[$i] . "|"); } echo ("\n");}?>

DEMO

25

Running a query

• One method is “query”

• Code snippet:$db = new PDO("informix:host=xeo;service=1526;►database=stores_demo;server=ol_xeo;protocol=olsoctcp;►EnableScrollableCursors=1;DB_LOCALE=EN_US.8859-1“ /* connection string */ , "informix"/* user */ , "informix"/* password */);

$rs = $db->query("SELECT * from customer");

Connection

Basic query

26

Accessing meta data

• PDO allows you to access Metadata

• Code snippet:$colCount = $rs->columnCount();

for ($i = 0; $i < $colCount; $i++) { $meta = $rs->getColumnMeta($i); echo ($meta['name'] . "|");}echo ("\n");

Column count for the result set

Returns an array containing meta data

Accessing the ‘name’ parameter of the meta data

27

Dumping rows

• Basic browsing thru a result set using foreach

• Code snippet:foreach ($rs as $row) { for ($i = 0; $i < $colCount; $i++) { echo ($row[$i] . "|"); } echo ("\n");}?>

28

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

29

Your first application using Eclipse

• Create a project

• Add the code

• Run it

DEMO

30

Agenda

• Who am I?

• Architecture

• Requirements

• PHP

• Functions vs. PDO

• Your first application using the Command Prompt

• Your first application using Eclipse

• Your first web application

31

Your first web application

• The same application, but web

• Strong embedding of HTML tags in the code

DEMO

32

Web Source Code<html><head><title>List of customers</title></head><body><?php

$i = 0;

$db = new PDO( "informix:host=xeo;service=1526;database=stores_demo;server=ol_xeo;protocol=olsoctcp;EnableScrollableCursors=1;DB_LOCALE=EN_US.8859-1"/* connection string */ , "informix"/* user */ , "informix"/* password */);

$rs = $db->query("SELECT * from customer");$colCount = $rs->columnCount();echo ("<table>");echo ("<thead><tr>");for ($i = 0; $i < $colCount; $i++) { $meta = $rs->getColumnMeta($i); echo ("<td>" . $meta['name'] . "</td>");}echo ("</tr></thead>");

33

Web Source Code (2)echo ("<tbody>");foreach ($rs as $row) { //print_r(); echo("<tr>"); for ($i = 0; $i < $colCount; $i++) { echo ("<td>" . $row[$i] . "</td>"); } echo("</tr>");}echo ("</tbody></table>");

?></body></html>

34

Pros & Cons

• The strong dependency between business logic and presentation layer is annoying

• Introduction of MVC framework

PHP getting closer and closer to Java!

35

Conclusion

• PHP now offers a standard way of accessing data

• PHP is easy

• PHP is rich

• PHP runs:• Command line apps (batch)• Web apps

• Frameworks are coming (Zend)

36

Complexity & Features

Level of complexity / feature of languages over time

2000 20051994

Easy

Difficult

4GL

2001 2002 2003 2004 200619991998199719961995

PHPOO in PHP 4

Zend Framework?

PHP 5

J2EE

Java SE 5Eclipse

Java

Java EE 5

37

And now…

• If you missed my other presentation: “Introduction to Java development with IDS”too bad!

• Come to see me in San Jose (May 2007):“Introduction to EJB3 dev. with IDS and Viper”

• (Give me good marks so I can be selected as best speaker of the conference and beat Darryl, Lester and Art - previous speakers).

38

And now (seriously)…

• Download Eclipse (I guess you all have IDS already)

• Download PHP

• Get a book (O’Reilly has quite a few great books, I learnt PHP with “PHP for dummies”)

• Join the development-tools forum on IIUG web site

• Get started with a few examples

39

Jean Georges PerrinIIUG

jgp@iiug.org

jgp@jgp.net

I13Introduction to PHP Development with IDS