Workshop for PHP on IBM i
Part 1
Mike Pavlak
Solutions Consultant
[email protected]
© All rights reserved. Zend Technologies, Inc.
Workshop Agenda
Time Topic Details
45 Presentation 1 Fundamentals of PHP & HTML
30 Lab 1 Lab Begins
15 Break
45 Presentation 2 Functions and Arrays
30 Lab 2
60 Lunch
60 Presentation 3 DB2 Data Access
30 Lab 3
15 Break
60 Presentation 4 OOP & Program call & Mobile
30 Lab 4
| 2 Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |
PHP Virtual Lab Part 1
45-60 minutes of presentation
Covering...
• PHP Basics
• HTML Tag Language
• HTML Forms
• PHP Iterative structures
© All rights reserved. Zend Technologies, Inc.
What is PHP?
PHP Hypertext Pre-Processor
Developed initially by Rasmus Lerdorf in 1994
Andi Gutmans and Zeev Suraski in 1997
Thousands of contributors worldwide
7 million+ developers
244+ million web sites! (Netcraft 2013)
© All rights reserved. Zend Technologies, Inc.
Top 10 Internet Sites by WW traffic
1. Google.com 6. Wikipedia.com
2. Facebook.com 7. qq.com
3. Youtube.com 8. Linked In
4. Yahoo.com 9. Taobao.com
5. Baidu.com 10. Twitter.com 7 more
in next
10
7
© All rights reserved. Zend Technologies, Inc. Mar 2014
PHP is a Scripting Language
Not compiled, interpreted
Easy way to get database info to Web
Short learning curve as OO is optional
Forgiving and intuitive code structure
Similar in nature to Net.Data, not as verbose
© All rights reserved. Zend Technologies, Inc.
Who uses PHP?
• Yahoo, GE, Fiat, Mazda, Disney
• On i, Harris Data, United Rentals, Starbucks, Prada
• Kids coming out of school (low $)
• Open source developers – 10,000+ projects
• Community - strong in knowledge and support
• 7 million+ developers
• IBM
CMS
• Many, many more!
• PHP is to Java what RPG is to COBOL!
© All rights reserved. Zend Technologies, Inc.
Zend Server Under the Covers
IBM i
ILE Apache:10080 i/OS
• Default PHP file
configuration PASE
FastCGI
HTTP:10080
URL Request *PGM
Server PHP CGI
(FastCGI)
CMD
HTML
Zend Server
DB2 UDB
MySQL
MSSQL Server
| © All rights reserved. Zend Technologies, Inc.
Oracle
Geting Started with PHP on IBM i
12
How PHP works
• PHP Runs on the server
• The primary goal of PHP is to generate something to the
browser it can digest!
HTML, JavaScript, Flax, XML, Flex, Etc.
• HTML is the primary language of the web so let’s look at
that for a bit...
© All rights reserved. Zend Technologies, Inc.
Fundamentals of HTML (Quick review)
© All rights reserved. Zend Technologies, Inc.
HTML
• The default presentation language of the web!
Easy to learn
Think about when you learned interactive IBM i programming
• You learned DDS, right…so you can learn HTML too!
Tag oriented: <b>bolded text</b>
Many tags make up the language
Nested orientation
|
15
Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |
HTML 4 – Structure of an HTML Document
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>An HTML Document</title>
</head>
<body>
<p>Hello world! </p>
</body>
</html>
|
16
Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |
HTML
• Popular HTML tags
• <table></table> Table definition (looks like a subfile)
• <head></head> Page header
• <title></title> Page Title, usually appears in tab…
• <p></p> Paragraph
• <br /> Carriage return/line break
• Hyperlink via Anchor tag:
<a href=“myPHPscript.php”>Text that will link</a>
| © All rights reserved. Zend Technologies, Inc.
Modernizing legacy applications on i5 with PHP
17
HTML Example
| © All rights reserved. Zend Technologies, Inc.
Modernizing legacy applications on i5 with PHP
18
What does that look like?
| © All rights reserved. Zend Technologies, Inc.
Modernizing legacy applications on i5 with PHP
19
Fundamentals of PHP
© All rights reserved. Zend Technologies, Inc.
PHP and your two new best friends
| © All rights reserved. Zend Technologies, Inc.
PHP101
21
PHP Script Structure
• PHP script structure
<?php will start a script
Optionally ?> terminates block or script
Semicolon terminates simple code segment
May embed multiple block of PHP code in single script
May have multiple PHP lines per line in code file
<html><head><title>This is my script</title></head><body>
<?php
<html><head><title>This is my script</title></head><body>
echo ‘Hello World’;
<?php echo ‘Hello World’; ?>
?>
</body></hmtl>
</body></hmtl>
| © All rights reserved. Zend Technologies, Inc.
PHP101
22
Variables
<?php
• Rules
$field1 = 5;
Case senstive $field2 = 10.6;
$field3 = $field1 + $field2;
Begin with $ $field1 = “Hello World”;
• $thisIsMyVariable
?>
• $_AnotherVariable
• $ this is not a variable
Implicit casting
Can be re-typed (Dynamically Typed Language)
| © All rights reserved. Zend Technologies, Inc.
PHP101
23
Variables and their types
• Scalar
Integer
• -2,147,483,648 thru 2,147,483,647
• Supports decimal, octal and hex representation
Floating-Point
• 1.7E-308 thru 1.7E+308
• 15 digits of decimal precision
Strings
• Big. Really big. Too big to discuss!
Boolean
• False is 0, 0.0, false keyword, empty string, object w/no values, null. All
others are true
• Four complex types: Object, array, null and resource
| © All rights reserved. Zend Technologies, Inc.
PHP101
24
Variables…(cont.)
• Scope
Global – Available everywhere but inside function (sort of)
Local – Available only in a function, destroyed at end
Static – Available only in a function, but remains
• Arrays (three types)
Enumerated
Associative
Multi-dimensional
| © All rights reserved. Zend Technologies, Inc.
PHP101
25
Arrays: Value assignment
• Enumerated
$Animals[0] = ‘Dog’
$Animals[1] = ‘Cat’
$Animals[2] = ‘Hamster’
• Associative
$Barnyard[‘Cow’] = ‘Calf’
$Barnyard[‘Chicken’] = ‘Chick’
$Barnyard[‘Horse’] = ‘Foal’
• Multi-dimensional
$farm[0] = $Animals
$farm[1] = $Barnyard
| © All rights reserved. Zend Technologies, Inc.
PHP101
26
Strings
• Most of PHP is character strings
• Single quotes
Variables not expanded
Heavy use of concatenation operator “.”
$string1 = ‘This is the value of variable x: ’ . $x
• Double quotes
Variables interpolation
$string2 = “This is the value of variable x: $x”
| © All rights reserved. Zend Technologies, Inc.
PHP101
27
Operators
• Most common operators apply (+,-,*,/,etc.)
• Concatenation
$greeting =‘My name is ’
DEFINE (TEACHER, ‘Mike Pavlak’) //Note uppercase…
$salute = $greeting . TEACHER (My name is Mike Pavlak)
• Increment / decrement
$a++, ++$a ($a = $a + 1)
$a--, --$a ($a = $a – 1)
• Logical operators
&& and
|| or
! not
| © All rights reserved. Zend Technologies, Inc.
PHP101
28
Comments
• A brief comment about comments
• // (C++ style)
indicates single line comment
May use at end of line of live code
Easily comments a line of code
• /* … */ (C Style)
Looks like CL? Pretty close
Comment block,
Can span multiple lines
• Shell style #
| © All rights reserved. Zend Technologies, Inc.
PHP101
29
The dreaded equal sign
• = Single equal sign is assignment
$X=3
$Y=$X
Now $Y = 3
• == Double equal sign is for conditions
If ($x==$y) { do something} else {do something else}
If you see single equal in condition, assignment will occur
• === Triple equal sign is exact equal conditions
$X= 3 (Integer) $Y=3.0 (Float)
If ($x==$y) will resolve to true
If ($x===$y) will resolve to false
| © All rights reserved. Zend Technologies, Inc.
PHP101
30
Flow control
• If
Condition
• Else
Condition
if ($x == 5) {
One line, no parenthesis…
$x++;
$y++;
if ($x == 5)
}
$x++;
else {
else
$x--;
$x--;
$y--;
}
|
31
Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |
Flow control (cont…)
• While (condition) {
Do something
• }
• Break and continue
While ($x < $y) {
$x++;
if ($x==5) break;
echo $x;
}
|
33
Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |
Flow control (cont…)
• Foreach
Iterate over elements in an array
$array1[0]=‘ham’;
$array1[1]=‘salami’;
$array1[2]=‘bologna’;
foreach ($array1 as $index=>$value) {
echo ‘Element ‘ . $index . ‘ is ‘ . $value.’<br />’;
}
Element 0 is ham
Element 1 is salami
Element 2 is bologna
|
34
Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |
End of Part 1
| © All rights reserved. Zend Technologies, Inc.
Modernizing legacy applications on i5 with PHP
35
Workshop Agenda
Time Topic Details
45 Presentation 1 Fundamentals of PHP & HTML
30 Lab 1 Lab Begins
15 Break
45 Presentation 2 Functions and Arrays
30 Lab 2
60 Lunch
60 Presentation 3 DB2 Data Access
30 Lab 3
15 Break
60 Presentation 4 OOP & Program call & Mobile
30 Lab 4
|
36
Modernizing legacy applications on i5 with PHP © All rights reserved. Zend Technologies, Inc. |