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
I13Introduction to PHP Development with IDS