Review: PHP's Outstanding success can be attributed to very strong community support
Feature: Here is a sample from the Toronto Meet-up community
If you go to the PHP main website, you will see it chock full of PHP web development events and conferences on a world-wide scale. This community spirit has produced one of the broadest set of major free open source applications (go here to OpenSourceCMS for over 70 major apps), a huge array of commercial as well as free utilities and programs (go here to HotScripts for over 13,000 PHP programs) and an ever expanding set of PHP IDE and tools (go here for IDE tools).
In this tutorial, the Toronto Meetup group is featured and one of its presenters, Paul Sobocinski. Meet-up is a Web-based meeting organizer that allows groups in various cities to schedule meeting and events on a special or ongoing basis. The presentation by Paul Sobocinski on the basics of a PHP+MYSQL applications is featured as both an example and a valuable tutorial here. The presentation slides are available below:
The idea of the presentation was threefold - 1)to demo how a Web database programming task could be quickly designed in PHP; 2)demo the PHP+MySQL database coding involved; and 3)show the working program in action. Paul not only showed the steps involved but developed big chunks of the code live to show how practical and relatively easily PHP+MySQL can be done.
Define and Design
The project is simple and realistic - allow users to rate website URLs positively or negatively based, accumulate, and then display the scores for the different URLS. Paul provides a mockup of the screen form and then the basic design of the MySQL database. Using the SQLyog database software, Paul shows the tables design - a simple two table layout. The walkthrough with SQLyog allows him to display the tables and highlight various database decisions including choice of primary keys and datatypes for some of the columns/variables in each table. In this way users get a real feel for how easily and quickly database tables can be defined in My SQL. In addition, the Q+A discussion reveals a number of solid choices for free MySQL database tools including MySQL's toolset, the Eclipse Database Explorer, and Qwest's Toad for MySQL among others.
Code and Go
Paul then discussed some of the coding issues associated with the model. He did not use a generalized database framework like PHP's Pear or the popular ADODB but did setup the database access in separate functions for easy switching if the underlying database is changed (not uncommon in PHP). In addition, Paul bypassed setting the whole program into a PHP class model but did follow the basic MVC-Model-Viewer Controller framework. Again there was useful discussion over the trade-offs of both using a class model and some options for using the MVC approach to PHP (and broader) coding.
Then Paul demonstrated the working program using a local Apache web server on his machine. Again this was quite helpful because users could see how to put all the elements together in an actual working web server environ. Also Paul made some changes to the code on the fly; and this was useful to see - how quickly one could change the code and change dramatically how the program worked. It also showed the problem with debugging PHP code - with its one-bug-at-a-time approach unless you use a step through debugger like Zend, Delphi for PHP, or PHP Designer 2007.
In less than an hour, Meetup attendees were able to see and discuss some of the trade-offs in not just doing a quick PHP database application but approaching Web development tasks in general. Thus there were very useful discussions on some of the side issues along the way. This is what makes PHP so dynamic. Though I have seen other groups like Oracle, C++, and Flash with similar community groups and resources, they are either sponsored by the company or associated with night school programs. PHP, in contrast, appears to draw upon grass roots interests and the community support spirit fostered at the main PHP website.
In sum, this was an excellent presentation because Paul showed a real PHP+MySQL app being built, the live tools used including some Q+A on alternative tools, and then some of the refinements that could be quickly made to the running app. Even better his presentation highlighted some of the design options considered but not taken (slide 12 in the Powerpoint presentation above). This is the type of feedback that is vital to developers - what does not work or why a certain approach is adopted.
The Meet-up format certainly allows for that type of feedback. I know that the Cold Fusion and Java Developers also have a strong periodic free meeting schedules independent of Meetup.com; but those have evening school sponsorship. Obviously in the fast pace of system development, the ability t o stay on top of development and yet discuss live with a practitioner is very valuable. I am familiar with similar PHP groups in Montreal and Calgary.
My thanks are to Paul for his excellent presentation and making its contents available here - click here for zipfile download of presentation, sql file definition, and PHP code.