Professional PHP: an open-source alternative for enterprise development [Antwerpen]

5,152 views

Published on

A presentation on Enterprise PHP development for people who have no experience with PHP programming.

Presentation at KDG Hogeschool Antwerpen

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,152
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
119
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Thijs
  • Professional PHP: an open-source alternative for enterprise development [Antwerpen]

    1. 1. Professional PHP an open-source alternative for enterprise development Thijs Feryn Felix De Vliegher 28/11/’08, KDG Antwerpen
    2. 2. About us <ul><li>Thijs Feryn </li></ul><ul><ul><li>Support manager & senior developer at COMBELL
    3. 3. PHP developer for about 5 years
    4. 4. Zend PHP5, certified engineer
    5. 5. Contributor to Zend Framework </li></ul></ul><ul><li>Felix De Vliegher </li></ul><ul><ul><li>Senior developer & sysadmin at COMBELL
    6. 6. PHP developer for about 7 years
    7. 7. Zend PHP5, Zend Framework certified engineer
    8. 8. Co-founder PHPBelgium
    9. 9. Contributor to the PHP project and Zend Framework </li></ul></ul>
    10. 10. About COMBELL <ul><li>Founded in 1999
    11. 11. 30 FTE and growing
    12. 12. +25 000 customers
    13. 13. Premium / Quality hosting segment
    14. 14. Leading hosting provider in Belgium concerning hosting & domain names in the SME market </li></ul><ul><ul><ul><li>+ 60 000 domain names
    15. 15. + 20 000 websites
    16. 16. + 600 servers, owned & managed by COMBELL
    17. 17. + 400 resellers </li></ul></ul></ul>
    18. 18. You? <ul><li>Experience with programming
    19. 19. Experience with PHP
    20. 20. Experience with PHP based applications
    21. 21. OOP in PHP?
    22. 22. Professional experience? (non-academic) </li></ul>
    23. 23. Open source software <ul><li>Development methodology
    24. 24. Source code is available
    25. 25. Use, change, improve
    26. 26. Collaborative
    27. 27. Common licenses: GPL, LGPL, MIT
    28. 28. Free “as in beer” </li></ul>
    29. 29. LAMP stack <ul><li>First used in c't magazine in 1998
    30. 30. Linux, Apache, MySQL and PHP
    31. 31. Open-source, free software
    32. 32. Available everywhere
    33. 33. Proven track record </li></ul>Application PHP Apache MySQL Linux
    34. 34. Why PHP? Easy to learn
    35. 35. Why PHP? <ul><li>Flexible in webserver environment
    36. 36. Platform independent
    37. 37. Lots of libraries, frameworks
    38. 38. Huge community
    39. 39. Code is freely available
    40. 40. Documentation
    41. 41. Commercial support
    42. 42. Short TTM </li></ul>
    43. 43. PHP vs other languages <ul><li>Dynamically typed
    44. 44. Low entry barrier
    45. 45. Stateless
    46. 46. Platform independence (vs .NET)
    47. 47. Interpreted language
    48. 48. Extensions and libraries </li></ul><ul><ul><ul><li>Built-in
    49. 49. Pecl
    50. 50. Pear </li></ul></ul></ul>(let’s say Java?)
    51. 51. PHP is community friendly
    52. 52. PHP is community friendly <ul><li>Lots of PHP conferences / PHP UG’s
    53. 53. Initiatives to contribute and learn
    54. 54. Active and friendly support: </li></ul><ul><ul><ul><li>forums
    55. 55. irc
    56. 56. twitter </li></ul></ul></ul>
    57. 57. Shiny statistics (sort of) PHP 4 Yahoo goes PHP PHP 5 IBM & Oracle endorse PHP Microsoft endorses PHP PHP 6?
    58. 58. PHP Applications
    59. 59. Used by
    60. 60. COMBELL customers using PHP
    61. 61. Support by
    62. 62. PHP in the enterprise Evolution from a functional approach to enterprise fundamentals
    63. 63. The fundamentals
    64. 64. Functionality <ul><li>Language choice based on features
    65. 65. Often the first and only concern
    66. 66. Evolution towards: </li></ul><ul><ul><ul><li>Frameworks
    67. 67. Testing & debugging </li></ul></ul></ul>
    68. 68. PHP Frameworks <ul><li>Eases development
    69. 69. More structure
    70. 70. Glue (component) vs full-stack
    71. 71. DRY
    72. 72. No maintenance
    73. 73. Extend or plugin where needed </li></ul>
    74. 74. PHP Frameworks <ul><li>Zend Framework </li></ul><ul><ul><ul><li>Component library and framework </li></ul></ul></ul><ul><li>Symfony </li></ul><ul><ul><ul><li>Full stack framework </li></ul></ul></ul><ul><li>eZ Components </li></ul><ul><ul><ul><li>Component library
    75. 75. Loosely coupled </li></ul></ul></ul><ul><li>Code Igniter </li></ul><ul><ul><ul><ul><li>Fast web application framework </li></ul></ul></ul></ul>
    76. 76. Security 1: Thou shalt filter input and escape output
    77. 77. Security <ul><li>php.ini settings
    78. 78. Areas of importance: </li></ul><ul><ul><ul><li>Form processing
    79. 79. Databases
    80. 80. Sessions
    81. 81. Error handling / reporting </li></ul></ul></ul><ul><li>Suhoshin / SAPI filter / mod_security </li></ul>
    82. 82. Performance <ul><li>Micro optimizations?
    83. 83. No premature optimization!
    84. 84. Caching </li></ul><ul><ul><ul><li>Opcode caching
    85. 85. {Page|Database|Module|...} caching </li></ul></ul></ul><ul><li>Database </li></ul><ul><ul><ul><li>Optimized database design
    86. 86. Indexing strategy
    87. 87. Writing good SQL </li></ul></ul></ul>
    88. 88. Performance <ul><li>Profiling: optimizing code
    89. 89. Optimalization of PHP as a language </li></ul>
    90. 90. Scalability <ul><li>Shared nothing: independent and self-sufficient
    91. 91. Design patterns - MVC
    92. 92. Database scaling - sharding
    93. 93. Development methodologies - agile, scrum
    94. 94. Version control
    95. 95. Documentation! </li></ul>
    96. 96. Testing I pity the fool who doesn’t write tests!
    97. 97. Testing <ul><li>More testing == less debugging!
    98. 98. Applications should work as expected
    99. 99. Actually takes less time
    100. 100. Provides higher quality
    101. 101. Easier to refactor and change
    102. 102. Makes confident developers </li></ul>
    103. 103. Testing and coverage
    104. 104. PHP Tools and utilities <ul><li>Editors </li></ul><ul><ul><ul><li>Eclipse PDT - http://www.eclipse.org/pdt/
    105. 105. Zend Studio - http://www.zend.com/studio </li></ul></ul></ul><ul><li>Continuous Integration </li></ul><ul><ul><ul><li>phpUnderControl - http://www.phpunit.de </li></ul></ul></ul><ul><li>Debuggers / Profilers </li></ul><ul><ul><ul><li>Xdebug - http://www.xdebug.org </li></ul></ul></ul><ul><li>Testing tools </li></ul><ul><ul><ul><li>PHPUnit - http://www.phpunit.info
    106. 106. Selenium - http://selenium.seleniumhq.org </li></ul></ul></ul>
    107. 107. Certifications <ul><li>Zend PHP 5 certification
    108. 108. Zend Framework Certification
    109. 109. Why: </li></ul><ul><ul><li>Differentiate yourself when looking for a job
    110. 110. Get listed in Zend Yellow Pages
    111. 111. Confirmation of a decent PHP skillset </li></ul></ul>
    112. 112. PHPBelgium user group <ul><li>Point of information for PHP
    113. 113. For developers, education, businesses
    114. 114. Bi-monthly meetings ( http://www.phpbelgium.be )
    115. 115. Organizing PHP-related events </li><ul><li>PHP TestFest (http://qa.php.net)
    116. 116. PHP Bug Hunt Day ( http://www.bughuntday.org ) </li></ul></ul>
    117. 117. Learn more about PHP <ul><li>Books: </li></ul><ul><ul><ul><li>All of php|architect
    118. 118. Power PHP 5 programming
    119. 119. Advanced PHP Programming </li></ul></ul></ul>Magazines: <ul><ul><ul><li>php|architect magazine </li></ul></ul></ul>
    120. 120. Learn more about PHP <ul><ul><li>Websites: </li></ul></ul>http://www.phpdeveloper.org http://devzone.zend.com http://planet-php.org <ul><ul><li>IRC (irc.freenode.net): </li></ul></ul>#phpc, ##php, #php_bnl <ul><li>Training: </li></ul>PHP|Architect Ibuildings ( http://www.ibuildings.nl ) We provide training, too!
    121. 121. Applied at COMBELL <ul><li>Service oriented architecture
    122. 122. Highly integrated with hosted solutions
    123. 123. Using Zend Framework, Symfony
    124. 124. Development workflow with: </li></ul><ul><ul><li>Subversion
    125. 125. Unit testing
    126. 126. Continuous integration (Cruisecontrol) </li></ul></ul>
    127. 128. Others are hiring too <ul><li>PHP is becoming big in enterprises
    128. 129. Valid career choice, not everything needs to be done with Java or .NET
    129. 130. PHP Engineers are in high demand! </li></ul>
    130. 131. If our presentation were a book
    131. 132. Thanks! Any questions? More info: [email_address] [email_address]

    ×