Professional PHP - an open-source alternative for enterprise development

4,089 views

Published on

A general overview of using PHP as an open-source alternative for enterprise development. This presentation was given as a guest lecture for senior-year BEng students.

Published in: Technology
2 Comments
8 Likes
Statistics
Notes
No Downloads
Views
Total views
4,089
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
0
Comments
2
Likes
8
Embeds 0
No embeds

No notes for slide

Professional PHP - an open-source alternative for enterprise development

  1. 1. Professional PHP <ul><li>an open-source alternative for enterprise development </li></ul>Thijs Feryn Felix De Vliegher 24/10/’08, Katho Kortrijk
  2. 2. About us <ul><li>Thijs Feryn </li></ul><ul><ul><li>Support manager & senior developer at COMBELL </li></ul></ul><ul><ul><li>PHP developer for about 5 years </li></ul></ul><ul><ul><li>Zend PHP5, certified engineer </li></ul></ul><ul><li>Felix De Vliegher </li></ul><ul><ul><li>Senior developer & sysadmin at COMBELL </li></ul></ul><ul><ul><li>PHP developer for about 7 years </li></ul></ul><ul><ul><li>Zend PHP5, Zend Framework certified engineer </li></ul></ul><ul><ul><li>Co-founder PHPBelgium </li></ul></ul><ul><ul><li>Contributor to the PHP project </li></ul></ul>
  3. 3. About COMBELL <ul><li>Founded in 1999 </li></ul><ul><li>30 FTE and growing </li></ul><ul><li>+25 000 customers </li></ul><ul><li>Premium / Quality hosting segment </li></ul><ul><li>Leading hosting provider in Belgium concerning hosting & domain names in the SME market </li></ul><ul><ul><ul><li>+ 60 000 domain names </li></ul></ul></ul><ul><ul><ul><li>+ 20 000 websites </li></ul></ul></ul><ul><ul><ul><li>+ 600 servers, owned & managed by COMBELL </li></ul></ul></ul><ul><ul><ul><li>+ 400 resellers </li></ul></ul></ul>
  4. 4. You? <ul><li>Experience with programming </li></ul><ul><li>Experience with PHP </li></ul><ul><li>Experience with PHP based applications </li></ul><ul><li>OOP in PHP? </li></ul><ul><li>Professional experience? (read: not katho) </li></ul>
  5. 5. Open source software <ul><li>Development methodology </li></ul><ul><li>Source code is available </li></ul><ul><li>Use, change, improve </li></ul><ul><li>Collaborative </li></ul><ul><li>Common licenses: GPL, LGPL, MIT </li></ul><ul><li>Free “as in beer” </li></ul>
  6. 6. LAMP stack <ul><li>First used in c't magazine in 1998 </li></ul><ul><li>Linux, Apache, MySQL and PHP </li></ul><ul><li>Open-source, free software </li></ul><ul><li>Available everywhere </li></ul><ul><li>Proven track record </li></ul>Application PHP Apache MySQL Linux
  7. 7. Why PHP? <ul><li>Easy to learn </li></ul>
  8. 8. Why PHP? <ul><li>Flexible in webserver environment </li></ul><ul><li>Platform independent </li></ul><ul><li>Lots of libraries, frameworks </li></ul><ul><li>Huge community </li></ul><ul><li>Code is freely available </li></ul><ul><li>Documentation </li></ul><ul><li>Commercial support </li></ul><ul><li>Short TTM </li></ul>
  9. 9. PHP vs other languages <ul><li>Dynamically typed </li></ul><ul><li>Low entry barrier </li></ul><ul><li>Stateless </li></ul><ul><li>Platform independence (vs .NET) </li></ul><ul><li>Interpreted language </li></ul><ul><li>Extensions and libraries </li></ul><ul><ul><ul><li>Built-in </li></ul></ul></ul><ul><ul><ul><li>Pecl </li></ul></ul></ul><ul><ul><ul><li>Pear </li></ul></ul></ul>(let’s say Java?)
  10. 10. PHP is community friendly
  11. 11. PHP is community friendly <ul><li>Lots of PHP conferences / PHP UG’s </li></ul><ul><li>Initiatives to contribute and learn </li></ul><ul><li>Active and friendly support: </li></ul><ul><ul><ul><li>forums </li></ul></ul></ul><ul><ul><ul><li>irc </li></ul></ul></ul><ul><ul><ul><li>twitter </li></ul></ul></ul>
  12. 12. Shiny statistics (sort of) PHP 4 Yahoo goes PHP PHP 5 IBM & Oracle endorse PHP Microsoft endorses PHP PHP 6?
  13. 13. PHP Applications
  14. 14. Used by
  15. 15. COMBELL customers using PHP
  16. 16. Support by
  17. 17. PHP in the enterprise Evolution from a functional approach to enterprise fundamentals
  18. 18. The fundamentals
  19. 19. Functionality <ul><li>Language choice based on features </li></ul><ul><li>Often the first and only concern </li></ul><ul><li>Evolution towards: </li></ul><ul><ul><ul><li>Frameworks </li></ul></ul></ul><ul><ul><ul><li>Testing & debugging </li></ul></ul></ul>
  20. 20. PHP Frameworks <ul><li>Eases development </li></ul><ul><li>More structure </li></ul><ul><li>Glue (component) vs full-stack </li></ul><ul><li>DRY </li></ul><ul><li>No maintenance </li></ul><ul><li>Extend or plugin where needed </li></ul>
  21. 21. 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 </li></ul></ul></ul><ul><ul><ul><li>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>
  22. 22. Security 1: Thou shalt filter input and escape output
  23. 23. Security <ul><li>php.ini settings </li></ul><ul><li>Areas of importance: </li></ul><ul><ul><ul><li>Form processing </li></ul></ul></ul><ul><ul><ul><li>Databases </li></ul></ul></ul><ul><ul><ul><li>Sessions </li></ul></ul></ul><ul><ul><ul><li>Error handling / reporting </li></ul></ul></ul><ul><li>Suhoshin / SAPI filter </li></ul>
  24. 24. Performance <ul><li>Micro optimizations? </li></ul><ul><li>No premature optimization! </li></ul><ul><li>Caching </li></ul><ul><ul><ul><li>Opcode caching </li></ul></ul></ul><ul><ul><ul><li>{Page|Database|Module|...} caching </li></ul></ul></ul><ul><li>Database </li></ul><ul><ul><ul><li>Optimized database design </li></ul></ul></ul><ul><ul><ul><li>Indexing strategy </li></ul></ul></ul><ul><ul><ul><li>Writing good SQL </li></ul></ul></ul>
  25. 25. Performance <ul><li>Profiling: optimizing code </li></ul><ul><li>Optimalization of PHP as a language </li></ul>
  26. 26. Scalability <ul><li>Shared nothing: independent and self-sufficient </li></ul><ul><li>Design patterns - MVC </li></ul><ul><li>Database scaling - sharding </li></ul><ul><li>Development methodologies - agile, scrum </li></ul><ul><li>Version control </li></ul><ul><li>Documentation! </li></ul>
  27. 27. Testing I pity the fool who doesn’t write tests!
  28. 28. Testing <ul><li>More testing == less debugging! </li></ul><ul><li>Applications should work as expected </li></ul><ul><li>Actually takes less time </li></ul><ul><li>Provides higher quality </li></ul><ul><li>Easier to refactor and change </li></ul><ul><li>Makes confident developers </li></ul>
  29. 29. Testing and coverage
  30. 30. PHP Tools and utilities <ul><li>Editors </li></ul><ul><ul><ul><li>Eclipse PDT - http://www.eclipse.org/pdt/ </li></ul></ul></ul><ul><ul><ul><li>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 </li></ul></ul></ul><ul><ul><ul><li>Selenium - http://selenium-ide.openqa.org/ </li></ul></ul></ul>
  31. 31. Certifications <ul><li>Zend PHP 5 certification </li></ul><ul><li>Zend Framework Certification </li></ul><ul><li>Why: </li></ul><ul><ul><li>Differentiate yourself when looking for a job </li></ul></ul><ul><ul><li>Get listed in Zend Yellow Pages </li></ul></ul><ul><ul><li>Confirmation of a decent PHP skillset </li></ul></ul>
  32. 32. PHPBelgium user group <ul><li>Point of information for PHP </li></ul><ul><li>For developers, education, businesses </li></ul><ul><li>Bi-monthly meetings (with a drink) </li></ul><ul><li>Organizing PHP-related events </li></ul><ul><li>PHP Bug Hunt Day </li></ul><ul><li>http://www.phpbelgium.be | http://bughuntday.org </li></ul>
  33. 33. Learn more about PHP <ul><li>Books: </li></ul><ul><ul><ul><li>All of php|architect </li></ul></ul></ul><ul><ul><ul><li>Power PHP 5 programming </li></ul></ul></ul><ul><ul><ul><li>Advanced PHP Programming </li></ul></ul></ul><ul><ul><li>Magazines: </li></ul></ul><ul><ul><ul><li>php|architect magazine </li></ul></ul></ul>
  34. 34. Learn more about PHP <ul><ul><li>Websites: </li></ul></ul><ul><ul><ul><li>http://www.phpdeveloper.org </li></ul></ul></ul><ul><ul><ul><li>http://devzone.zend.com </li></ul></ul></ul><ul><ul><ul><li>http://planet-php.org </li></ul></ul></ul><ul><ul><li>IRC (irc.freenode.net): </li></ul></ul><ul><ul><ul><li>#phpc, ##php, #php_bnl </li></ul></ul></ul><ul><li>Training: </li></ul><ul><ul><ul><li>PHP|Architect </li></ul></ul></ul><ul><ul><ul><li>Ibuildings (http://www.ibuildings.nl) </li></ul></ul></ul>
  35. 35. Applied at COMBELL <ul><li>Service oriented architecture </li></ul><ul><li>Highly integrated with hosted solutions </li></ul><ul><li>Using Zend Framework, Symfony </li></ul><ul><li>Development workflow with: </li></ul><ul><ul><li>Subversion </li></ul></ul><ul><ul><li>Unit testing </li></ul></ul><ul><ul><li>Continuous integration (Cruisecontrol) </li></ul></ul>
  36. 37. Others are hiring too <ul><li>PHP is becoming big in enterprises </li></ul><ul><li>Valid career choice, not everything needs to be done with Java or .NET </li></ul><ul><li>PHP Engineers are in high demand! </li></ul>
  37. 38. If our presentation were a book
  38. 39. Thanks! <ul><li>Any questions? </li></ul><ul><li>More info: </li></ul><ul><li>[email_address] </li></ul><ul><li>[email_address] </li></ul>

×