How To Start Up With PHP In IBM i

2,543 views
2,404 views

Published on

This presentation introduces steps for PHP jump start in IBM i (AS/400)

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,543
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Lists the db2_ APIs documented in php.net Note: System i application developers should avoid use of APIs denoted with a red box. The reason is that the use of this API is less efficient or performs more slowly than another available option. For example, avoid the use of db2_exec, especially if the statement is being executed multiple times in the application. Instead, use db2_prepare to prepare the statement once using parameter markers, then execute the prepared statement using the db2_execute API.
  • Lists the db2_ APIs documented in php.net Note: System i application developers should avoid use of APIs denoted with a red box. The reason is that the use of this API is less efficient or performs more slowly than another available option. For example, avoid the use of db2_exec, especially if the statement is being executed multiple times in the application. Instead, use db2_prepare to prepare the statement once using parameter markers, then execute the prepared statement using the db2_execute API.
  • Lists the db2_ APIs documented in php.net Note: System i application developers should avoid use of APIs denoted with a red box. The reason is that the use of this API is less efficient or performs more slowly than another available option. For example, avoid the use of db2_exec, especially if the statement is being executed multiple times in the application. Instead, use db2_prepare to prepare the statement once using parameter markers, then execute the prepared statement using the db2_execute API.
  • The 5250 Bridge API offers a simple APIs for PHP applications to grab fields and strings from an interactive (5250) program and wrap them into real web applications. This way you can seamlessly integrate output of monolithic green screen applications into your PHP web application without the need to rewrite the business logic and directly access the database
  • Here are the steps how PHP interacts with i5 on-line programs PHP will start an i5 interactive (5250) session in QINTER subsystem utilizing 5250 Bridge API.. This diagram shows how the 5250 Bridge can be used to access information from a 5250 program and leverage it to either be displayed in a browser-based environment or to populate screen values: 1. PHP sends a 'start session' request to the 5250 Program using the 5250 Bridge. 2. The 5250 Bridge returns a confirmation to PHP that the session has started. 3. The 5250 Bridge sends current screen information in XML format to PHP (e.g. format name, input and output fields and current cursor position). 4. The input values can be automatically entered into the program or sent on in an html format for user input.
  • Here a sample i5/OS online program displaying users where user detailed can be displayed by entering 5 in the option column Next sample, overlying the 5250 green screen, shows a simple web interface of the same i5/OS online program created by the 5250 Bridge Next sample, overlying the simple web interface, shows extended web interface of the same i5/OS online program. This sample shows how a PHP programmer can use the 5250 Bridge and extent a regular i5/OS online program to a web by adding images and utilizing Ajax for better interactive interface
  • How To Start Up With PHP In IBM i

    1. 1. How to Start up with PHP in IBM i June, 2007 Sam Pinkhasov Project Manager for IBM products [email_address]
    2. 2. Agenda <ul><li>First steps </li></ul><ul><li>Accessing DB2/400 </li></ul><ul><li>PHP Toolkit for i5/OS </li></ul><ul><li>5250 Bridge </li></ul><ul><li>PHP is ready for production by OpeniVew </li></ul><ul><li>Q&A </li></ul>
    3. 3. Zend Platform with 5250 Bridge IBM i DB2/400 Pgm, CMD, Spooled file Database Business Zend Studio Zend Core with Toolkit APIs Apache webserver Zend PHP Products for IBM I Diagram Zend Guard Windows/Linux Browser
    4. 4. <ul><li>Setting up PHP in IBM i </li></ul><ul><li>Verify installation </li></ul><ul><li>Setup debug in Zend Studio and Zend Core </li></ul><ul><li>Write a simple PHP code </li></ul>First Steps
    5. 5. <ul><li>Install Zend Core </li></ul><ul><ul><li>Requirements </li></ul></ul><ul><ul><ul><li>5722SS1 - - PASE Option (Option 33) </li></ul></ul></ul><ul><ul><ul><li>5733SC1 - IBM Portable Utilities For I5/OS (Option *BASE) </li></ul></ul></ul><ul><ul><ul><li>5733sc1 - OpenSSH ,OpenSST,Zlib (Option 1) </li></ul></ul></ul><ul><ul><li>Download Zend Core for i5/OS from Zend Network </li></ul></ul><ul><ul><ul><li>http://www.zend.com/products/zend_core/zend_core_for_i5_os </li></ul></ul></ul><ul><ul><li>Install </li></ul></ul><ul><ul><ul><li>RSTLICPGM LICPGM(1ZCORE5) DEV(*SAVF) SAVF(QGPL/ZCORESAVF) </li></ul></ul></ul><ul><ul><ul><li>SBMJOB (RSTLICPGM LICPGM(1ZCORE5) DEV(*SAVF) SAVF(QGPL/ZCORESAVF) </li></ul></ul></ul><ul><li>Install Zend Studio Eclipse Edition for i5/OS </li></ul><ul><ul><li>Download from Zend Network </li></ul></ul><ul><ul><li>Install </li></ul></ul><ul><ul><li>Registration </li></ul></ul>Install Zend Core and Zend Studio
    6. 6. Setting up PHP in IBM i <ul><li>Requirements </li></ul><ul><ul><li>5722SS1 - PASE Option (Option 33) </li></ul></ul><ul><ul><li>5733SC1 - IBM Portable Utilities For I5/OS (Option *BASE) </li></ul></ul><ul><ul><li>5733sc1 - OpenSSH ,OpenSST,Zlib (Option 1) </li></ul></ul><ul><li>Download Zend Core for i5/OS from zend.com </li></ul><ul><ul><li>RSTLICPGM installation </li></ul></ul><ul><ul><li>Creates the ZENDCORE library, /usr/local/Zend directory, and Zend-specific user profiles </li></ul></ul><ul><li>Start the Zend subsystem and the HTTP servers </li></ul><ul><ul><li>GO ZENDCORE/ZCMENU </li></ul></ul><ul><ul><li>Option 5 (Service Management menu) </li></ul></ul><ul><ul><li>Option 1 (Start Zend Core subsystem) or Option 4 (Start Apache server instances) </li></ul></ul>
    7. 7. Setting up PHP in IBM i <ul><li>Download Zend Studio for i5/OS from zend.com </li></ul><ul><ul><li>Integrated development environment </li></ul></ul><ul><ul><li>Runs on Windows and Linux </li></ul></ul>
    8. 8. <ul><li>Start Zend Core console : http://i5_server:89 </li></ul><ul><li>Run WRKACTJOB SBS(ZEND) CL command </li></ul><ul><li>Run PHP demo application installed with the product </li></ul>Installation verification
    9. 9. Zend Core Console http://i5_server:89
    10. 10. Zend Subsystem – wrkactjob sbs(Zend)
    11. 11. <ul><li>Run Zend Navigator demo application </li></ul><ul><ul><ul><li>URL: http://i5_server:89/Zend_Navigator_Demo/login.php </li></ul></ul></ul>Run PHP Application The demo application sources are available in www/zendcore/htdocs/Zend_Navigator_Demo .
    12. 12. Run Zend Navigator http://i5_server:89/Zend_Navigator_Demo/login.php
    13. 13. Zend Core – Debug Set Up
    14. 14. Zend Core – Restart Apache <ul><li>GO ZENDCORE/ZCMENU </li></ul>
    15. 15. Zend Studio - Debug Set Up
    16. 16. Writing a simple PHP code <ul><li>Map IFS directory /www/zendcore/htdocs to Windows driver </li></ul><ul><li>Start Zend Studio </li></ul><ul><li>Start project wizard: New->Project </li></ul><ul><li>Select Windows mapped IFS drive </li></ul><ul><li>Write the following code </li></ul><ul><ul><li><?php </li></ul></ul><ul><ul><li>echo phpinfo(); </li></ul></ul><ul><ul><li>?> </li></ul></ul><ul><li>Save as test.php </li></ul><ul><li>Run http://i5_server:89/test.php </li></ul>
    17. 17. Writing a simple PHP code
    18. 18. Running PHP command line <ul><li>From the default PASE shell. </li></ul><ul><ul><li>call qp2term </li></ul></ul><ul><ul><ul><li>/usr/local/Zend/core/bin/php-cli -help </li></ul></ul></ul><ul><li>From the System i command line (or CL program) </li></ul><ul><ul><li>CALL PGM(QP2SHELL) PARM('/usr/local/Zend/core/bin/php-cli' '-help') </li></ul></ul><ul><li>From QSH. </li></ul><ul><ul><li>QSH </li></ul></ul><ul><ul><ul><li>/usr/local/Zend/core/bin/php-cli –help </li></ul></ul></ul><ul><li>Example: </li></ul><ul><ul><li>/usr/local/Zend/core/bin/php-cli /usr/local/Zend/apache2/htdocs/DB2_example.php </li></ul></ul>
    19. 19. Accessing DB2/400 <ul><li>Server/connection </li></ul><ul><ul><li>db2_bind_param </li></ul></ul><ul><ul><li>db2_client_info </li></ul></ul><ul><ul><li>db2_close </li></ul></ul><ul><ul><li>db2_connect </li></ul></ul><ul><ul><li>db2_cursor_type </li></ul></ul><ul><ul><li>db2_exec </li></ul></ul><ul><ul><li>db2_execute </li></ul></ul><ul><ul><li>db2_prepare </li></ul></ul><ul><ul><li>db2_pconnect </li></ul></ul><ul><ul><li>db2_server_info </li></ul></ul><ul><ul><li>db2_statistics </li></ul></ul><ul><li>Result </li></ul><ul><ul><li>db2_free_result </li></ul></ul><ul><ul><li>db2_next_result </li></ul></ul><ul><ul><li>db2_result </li></ul></ul><ul><li>Commit/Rollback </li></ul><ul><ul><li>db2_autocommit </li></ul></ul><ul><ul><li>db2_commit </li></ul></ul><ul><ul><li>db2_rollback </li></ul></ul><ul><li>Errors </li></ul><ul><ul><li>db2_conn_error </li></ul></ul><ul><ul><li>db2_conn_errormsg </li></ul></ul><ul><ul><li>db2_stmt_error </li></ul></ul><ul><ul><li>db2_stmt_errormsg </li></ul></ul><ul><li>Column/Procedure </li></ul><ul><ul><li>db2_column_privileges </li></ul></ul><ul><ul><li>db2_columns </li></ul></ul><ul><ul><li>db2_procedure_columns </li></ul></ul><ul><ul><li>db2_procedures </li></ul></ul><ul><ul><li>db2_special_columns </li></ul></ul><ul><li>Table information </li></ul><ul><ul><li>db2_num_fields </li></ul></ul><ul><ul><li>db2_num_rows </li></ul></ul><ul><ul><li>db2_table_privileges </li></ul></ul><ul><ul><li>db2_tables </li></ul></ul><ul><li>Fetch </li></ul><ul><ul><li>db2_fetch_array </li></ul></ul><ul><ul><li>db2_fetch_assoc </li></ul></ul><ul><ul><li>db2_fetch_both </li></ul></ul><ul><ul><li>db2_fetch_object </li></ul></ul><ul><ul><li>db2_fetch_row </li></ul></ul><ul><li>Field information </li></ul><ul><ul><li>db2_field_display_size </li></ul></ul><ul><ul><li>db2_field_name </li></ul></ul><ul><ul><li>db2_field_num </li></ul></ul><ul><ul><li>db2_field_precision </li></ul></ul><ul><ul><li>db2_field_scale </li></ul></ul><ul><ul><li>db2_field_type </li></ul></ul><ul><ul><li>db2_field_width </li></ul></ul><ul><li>Key information </li></ul><ul><ul><li>db2_foreign_keys </li></ul></ul><ul><ul><li>db2_primary_keys </li></ul></ul><ul><li>Statement </li></ul><ul><ul><li>db2_free_stmt </li></ul></ul>
    20. 20. <ul><li>There are few connections options in PHP </li></ul><ul><ul><li>db2_connect(“”,””,””) – local server </li></ul></ul><ul><ul><ul><li>The database connection job is create under the same user as the Apache httpd server profile NOBODY (*USER). </li></ul></ul></ul><ul><ul><li>db2_connect(“127.0.0.1&quot;, “SAM&quot;, “PASSWROD&quot;) – local server </li></ul></ul><ul><ul><ul><li>The database connection job is created under the user profile SAM/PASSWROD. </li></ul></ul></ul><ul><ul><li>db2_connect(“10.1.1.33&quot;, “SAM&quot;, “PASSWROD&quot;) – remote remote database connection job is created under the user server </li></ul></ul><ul><ul><ul><li>The profile SAM/PASSWROD. </li></ul></ul></ul>Server connection – db2_connect API <ul><ul><li>Tip: Use WRKRDBDIRE to get the database name on the remote </li></ul></ul>
    21. 21. <ul><li>DB2 functions </li></ul><ul><ul><ul><li>db2_connect – Connects to server </li></ul></ul></ul><ul><ul><ul><li>db2_prepare – Prepares an SQL statement </li></ul></ul></ul><ul><ul><ul><li>db2_bind_param – Binds the an SQL statement </li></ul></ul></ul><ul><ul><ul><li>db2_execute – Executes an SQL command </li></ul></ul></ul><ul><ul><ul><li>db2_fetch_array – Reads records </li></ul></ul></ul><ul><li>View attached program DB2_example.php </li></ul>Sample code accessing database
    22. 22. Program Result http://i5_server:89/DB2_example .php
    23. 23. Recommendations <ul><li>CCSID = 65535 </li></ul><ul><ul><li>PHP scripts getting “junk” back from their DB2 SQL queries. Root problem is often QCCSID setting 65535 (binary default from manufacturing) </li></ul></ul><ul><ul><li>Change CCSID before starting Apache </li></ul></ul><ul><ul><ul><li>signon as QSECOFR </li></ul></ul></ul><ul><ul><ul><li>GO ZENDCORE/ZCMENU -> stop apache </li></ul></ul></ul><ul><ul><ul><li>CHGJOB LANGID(ENU) CNTRYID(US) CCSID(37) </li></ul></ul></ul><ul><ul><ul><li>GO ZENDCORE/ZCMENU -> start apache </li></ul></ul></ul><ul><li>Journaling (transactions) </li></ul><ul><ul><li>php.ini setting ibm_db2.i5_allow_commit=0 is the default. </li></ul></ul><ul><ul><li>If all of your schemas/libraries have journal enabled change php.ini to ibm_db2.i5_allow_commit=1 </li></ul></ul>
    24. 24. Other File Functions <ul><li>PHP has number of functions allowing access and update information contained in flat files and streams on IBM i. </li></ul><ul><ul><li>Open, read, write and close a flat file </li></ul></ul><ul><ul><ul><li>fopen () </li></ul></ul></ul><ul><ul><ul><li>fclose () </li></ul></ul></ul><ul><ul><ul><li>fread () </li></ul></ul></ul><ul><ul><ul><li>fwrite () </li></ul></ul></ul><ul><ul><li>Read a CSV file </li></ul></ul><ul><ul><ul><li>fgetcsv() </li></ul></ul></ul>Look it up in the PHP manual to see files examples .
    25. 25. PHP Toolkit for i5/OS <ul><li>Bundled with Zend Core </li></ul><ul><li>Geared towards accessing data and resources from PHP </li></ul><ul><ul><li>Programs and/or service programs </li></ul></ul><ul><ul><li>Data Queue </li></ul></ul><ul><ul><li>CL commands </li></ul></ul><ul><ul><li>Spooled files </li></ul></ul><ul><ul><li>Record-level file access </li></ul></ul><ul><ul><li>User Space </li></ul></ul>
    26. 26. PHP Toolkit for i5/OS – list of functions <ul><li>Connection management </li></ul><ul><ul><li>i5_connect </li></ul></ul><ul><ul><li>i5_pconnect </li></ul></ul><ul><ul><li>i5_close </li></ul></ul><ul><ul><li>i5_pclose </li></ul></ul><ul><ul><li>i5_adopt_authority </li></ul></ul><ul><ul><li>i5_error </li></ul></ul><ul><ul><li>i5_errno </li></ul></ul><ul><ul><li>i5_errormsg </li></ul></ul><ul><li>Command calls </li></ul><ul><ul><li>i5_command </li></ul></ul><ul><li>Program calls </li></ul><ul><ul><li>i5_program_prepare </li></ul></ul><ul><ul><li>i5_program_prepare_PCML </li></ul></ul><ul><ul><li>i5_program_call </li></ul></ul><ul><ul><li>i5_program_close </li></ul></ul><ul><li>Data retrieval </li></ul><ul><ul><li>i5_fetch_array </li></ul></ul><ul><ul><li>i5_fetch_assoc </li></ul></ul><ul><ul><li>i5_fetch_object </li></ul></ul><ul><ul><li>i5_fetch_row </li></ul></ul><ul><ul><li>i5_info </li></ul></ul><ul><ul><li>i5_field_len </li></ul></ul><ul><ul><li>i5_field_name </li></ul></ul><ul><ul><li>i5_field_scale </li></ul></ul><ul><ul><li>i5_field_type </li></ul></ul><ul><ul><li>i5_list_fields </li></ul></ul><ul><ul><li>i5_num_fields </li></ul></ul><ul><ul><li>i5_result </li></ul></ul><ul><li>Native file access </li></ul><ul><ul><li>i5_open </li></ul></ul><ul><ul><li>i5_addnew </li></ul></ul><ul><ul><li>I5_edit </li></ul></ul><ul><ul><li>I5_delete </li></ul></ul><ul><ul><li>i5_cancel_edit </li></ul></ul><ul><ul><li>i5_setvalue </li></ul></ul><ul><ul><li>i5_update </li></ul></ul><ul><ul><li>i5_range_from </li></ul></ul><ul><ul><li>i5_range_to </li></ul></ul><ul><ul><li>i5_range_clear </li></ul></ul><ul><ul><li>i5_data_seek </li></ul></ul><ul><ul><li>i5_seek </li></ul></ul><ul><ul><li>i5_bookmark </li></ul></ul><ul><ul><li>i5_free_file </li></ul></ul><ul><ul><li>i5_new_record </li></ul></ul><ul><ul><li>i5_update_record </li></ul></ul><ul><ul><li>i5_get_keys </li></ul></ul><ul><li>SQL access </li></ul><ul><ul><li>I5_query </li></ul></ul><ul><ul><li>I5_prepare </li></ul></ul><ul><ul><li>i5_bind_result </li></ul></ul><ul><ul><li>i5_execute </li></ul></ul><ul><ul><li>i5_getblob </li></ul></ul><ul><ul><li>i5_setblob </li></ul></ul><ul><li>Transactions </li></ul><ul><ul><li>i5_transactions </li></ul></ul><ul><ul><li>i5_commit </li></ul></ul><ul><ul><li>i5_rollback </li></ul></ul>
    27. 27. PHP Toolkit functions <ul><li>System values </li></ul><ul><ul><li>i5_get_system_value </li></ul></ul><ul><li>Data areas </li></ul><ul><ul><li>i5_data_area_prepare </li></ul></ul><ul><ul><li>i5_data_area_receive </li></ul></ul><ul><ul><li>i5_data_area_send </li></ul></ul><ul><ul><li>i5_data_area_close </li></ul></ul><ul><li>Print/Get spooled file </li></ul><ul><ul><li>i5_spool_list </li></ul></ul><ul><ul><li>i5_spool_list_read </li></ul></ul><ul><ul><li>i5_spool_list_close </li></ul></ul><ul><ul><li>i5_spool_get_data </li></ul></ul><ul><ul><li>i5_spool_from_file </li></ul></ul><ul><li>Job logs </li></ul><ul><ul><li>i5_jobLog_list </li></ul></ul><ul><ul><li>i5_jobLog_list_read </li></ul></ul><ul><ul><li>i5_jobLog_list_close </li></ul></ul><ul><li>Active jobs </li></ul><ul><ul><li>i5_job_list </li></ul></ul><ul><ul><li>i5_job_list_read </li></ul></ul><ul><ul><li>i5_job_list_close </li></ul></ul><ul><li>Objects list </li></ul><ul><ul><li>i5_object_list </li></ul></ul><ul><ul><li>i5_object_list_read </li></ul></ul><ul><ul><li>i5_object_list_close </li></ul></ul><ul><li>User space </li></ul><ul><ul><li>i5_userspace_crearte </li></ul></ul><ul><ul><li>i5_userspace_prepare </li></ul></ul><ul><ul><li>i5_userspace_get </li></ul></ul><ul><ul><li>i5_userspace_put </li></ul></ul><ul><li>Data Queue </li></ul><ul><ul><li>i5_dtaq_prepare </li></ul></ul><ul><ul><li>i5_dtaq_recieve </li></ul></ul><ul><ul><li>i5_dtaq_send </li></ul></ul><ul><ul><li>i5_dtaq-close </li></ul></ul>
    28. 28. <ul><li>RPG program </li></ul>Sample code calling an RPG program
    29. 29. <ul><li>PHP Toolkit functions </li></ul><ul><ul><ul><li>I5_connect – opens server connection </li></ul></ul></ul><ul><ul><ul><li>i5_program_prepare – defines the program parameters </li></ul></ul></ul><ul><ul><ul><li>i5_program_call – calls a program </li></ul></ul></ul><ul><ul><ul><li>i5_program_close – clears program handles </li></ul></ul></ul><ul><ul><ul><li>i5-_close – closes server connection </li></ul></ul></ul>Sample code calling an RPG program
    30. 30. PHP Toolkit Resources <ul><li>Zend Core User Guide </li></ul><ul><ul><li>Zend Core for i5/OS product page – http://www.zend.com/products/zend_core/zend_core_for_i5_os </li></ul></ul><ul><ul><li>Zend Core installation directory - /usr/local/Zend/ Zend_Core_User_Guide_i5OS.pdf </li></ul></ul>
    31. 31. PHP Toolkit Templates <ul><li>PHP Toolkit Templates are available in Zend Studio </li></ul><ul><ul><li>RAD </li></ul></ul><ul><ul><li>Error free code </li></ul></ul><ul><ul><li>Good learning tool </li></ul></ul><ul><ul><li>Code standardization </li></ul></ul><ul><ul><li>Create your company specific logic </li></ul></ul><ul><li>How to access? </li></ul><ul><ul><li>Toolkit templates list - Window -> Preference -> Templates </li></ul></ul><ul><ul><li>Import/Export </li></ul></ul><ul><li>Documentation </li></ul><ul><ul><li>Zend Core and Zend Studio User Guide </li></ul></ul>
    32. 32. Product Definition <ul><ul><li>The 5250 Bridge is a PHP based solution for running interactive applications in the i5/OS environment </li></ul></ul>|
    33. 33. Technical Overview <ul><li>PHP library containing set of PHP functions/classes accessing 5250 data stream allowing to run any 5250 interface/applications in PHP </li></ul><ul><ul><li>Utilizing IBM WebFace server – part of i5/OS TCP/IP </li></ul></ul><ul><ul><li>All screen information available: </li></ul></ul><ul><ul><ul><li>Input and Output fields and attributes </li></ul></ul></ul><ul><ul><ul><li>Format name </li></ul></ul></ul><ul><ul><li>Maintainable 5250 session </li></ul></ul><ul><ul><li>No Java </li></ul></ul>|
    34. 34. | 5250 Bridge Diagram
    35. 35. | Demo Program – Subfile Application
    36. 36. Resources: Books <ul><li>Sklar, David. Learning PHP 5 . O'Reilly Media, Inc. 2004. </li></ul><ul><ul><li>http://www.oreilly.com/catalog/learnphp5/ </li></ul></ul><ul><li>Kelly, Brian. Getting Started with PHP for i5/OS, MC Press </li></ul><ul><ul><li>http://www.mc-store.com/5934.html </li></ul></ul><ul><li>Jeff Olen , Kevin Schroeder, The IBM i Programmer's Guide to PHP </li></ul><ul><ul><li>http://www.mc-store.com/5096.html </li></ul></ul><ul><li>PHP: Zend for i5/OS </li></ul><ul><ul><li>Redbook SG24-7327-00 http://www.redbooks.ibm.com/abstracts/sg247327.html </li></ul></ul>
    37. 37. Resources: Web sites <ul><li>PHP documentation at php.net </li></ul><ul><ul><li>http://www.php.net/docs.php </li></ul></ul><ul><li>DB2 documentation </li></ul><ul><ul><li>http://phpbuilder.com/manual/en/ref.ibm-db2.php </li></ul></ul><ul><li>Zend and i5/OS </li></ul><ul><ul><li>Overview, benefits, products, getting started </li></ul></ul><ul><ul><li>http://www-03.ibm.com/systems/i/software/php/ </li></ul></ul><ul><li>ReadWiki – online documentation </li></ul><ul><ul><li>http://www-941.ibm.com/collaboration/wiki/display/sg247327/Home </li></ul></ul><ul><li>PHP for i5/OS forums – discussion groups </li></ul><ul><ul><li>http://www.zend.com/forums </li></ul></ul>
    38. 38. Resources : Web sites <ul><li>Zend Developer Zone - Tutorials </li></ul><ul><ul><li>http://devzone.zend.com/public/view/tag/tutorials </li></ul></ul><ul><ul><li>“ Integrating PHP Using Web Services” http://www.ibmsystemsmag.com/i5/april07/tipstechniques/12365p1.aspx </li></ul></ul><ul><li>Tips </li></ul><ul><ul><li>Installing Zend Core - http://www.mcpressonline.com/mc?50@252.8sVbe2ZbLxe.1@.6b507b23 </li></ul></ul><ul><ul><li>Use PHP to Bring i5/OS Resources to the Web </li></ul></ul><ul><ul><ul><li>http://www.itjungle.com/fhg/fhg103107-story01.html </li></ul></ul></ul><ul><ul><ul><li>http://www.itjungle.com/fhg/fhg011608-story01.html </li></ul></ul></ul>
    39. 39. Resources: Sample Code <ul><li>Check out the thousands of PHP scripts available that can be used as-is or as the starting point for Web projects . </li></ul><ul><ul><li>http://www.hotscripts.com </li></ul></ul><ul><ul><li>http://www.phpjunkyard.com/ </li></ul></ul><ul><ul><li>http://www.phpfreaks.com/ </li></ul></ul><ul><ul><li>http://phpfreebies.com/ </li></ul></ul>

    ×