• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Developing better PHP projects

on

  • 9,825 views

A quick overview on project structure, development practices and use of tools to improve the overall quality of your PHP projects.

A quick overview on project structure, development practices and use of tools to improve the overall quality of your PHP projects.

Statistics

Views

Total Views
9,825
Views on SlideShare
5,929
Embed Views
3,896

Actions

Likes
15
Downloads
147
Comments
0

17 Embeds 3,896

http://phpfour.com 3281
http://www.phpfour.com 532
http://speakerrate.com 50
http://www.phpfour.dev 6
http://localhost 4
http://translate.googleusercontent.com 4
http://www.linkedin.com 4
http://static.slidesharecdn.com 3
http://rajibsarker.wordpress.com 3
http://webcache.googleusercontent.com 2
http://www.m.techgig.com 1
http://coderwall.com 1
http://xianguo.com 1
http://backupurl.com 1
http://dev.ombiks.de 1
http://www.hanrss.com 1
http://www.netvibes.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Developing better PHP projects Developing better PHP projects Presentation Transcript

    • Developing better PHP projects Md Emran Hasan phpXperts seminar 2010 Nov 06, 2010
    • Who are you? • Team / Project lead ? • Development Manager ? • Senior Developer ? • Freelancer ?
    • Why you need this ? • Better project organization • Improved teamwork • Adaptable to change • Predictable and maintainable
    • Elements • Quality of code • Project structure • Development practices • Use of tools
    • Project Structure
    • Common types • Stand-alone • Framework • Hybrid
    • Stand-alone index.php lib/ login.php email_sender.php account.php alldb.php ... xmlwriter.php inc/ ezSql/ config.php tcpdf/ common.php
    • Stand-alone (cont’d) • Separate files • All variables are global • Difficult to manage • Almost no separation of concern
    • Framework library/ models/ Zend/ User.php application/ Page.php config/ views/ application.ini script/ controllers/ auth/ Auth.php login.php Page.php forgot.php
    • Framework (cont’d) • Built on top of Library Collection • Applications extend from it • Focuses on 20% of the 80-20 rule
    • Hybrid .htaccess Models/ index.php User.php Pages/ Page.php Login.php Lib/ Account.php ezSQL/ Home.php Zend/ ... tcpdf/
    • Hybrid (cont’d) • Improved version of stand-alone • Utilizes other Library Collection (Zend, PEAR) • Uses Front Controller approach
    • Development Practices
    • Planning • Collaborate with customer • Estimate team-wise • Break total work into iterations • Daily stand-up meeting
    • Design • Prefer simple design over complexity • Adhere to a coding standard • Avoid guessing by doing coding spike!
    • Coding • Write unit tests first • Collective code ownership • Optimize last • Refactor mercilessly
    • First make it work, then make it right, then make it fast. - Kent Beck
    • Use of tools
    • Choosing tools • Having a process helps choose tools • Choosing Inappropriate tool can do harm • Build a process if you don’t have any
    • Type of tools Release Management Product Management Development Management
    • Product Management • Should allow building requirements (use cases, screen mockups, etc) • Must be collaborative • Must be shared among project members
    • Development Management • Need to allow multiple developers to work together (version control) • Need to keep codebase under control (code review) • Need to deal with bugs (issue tracking)
    • Release Management • Needs to allow setting project timeline • Should allow scheduling of milestones • Should measure development team velocity
    • Suggestion for Newcomer • Version Control: Subversion • Issue/Feature Tracking: Spreadsheet (Excel, Google Docs) • Collaboration: Dropbox, Google Docs • Communication: IM, Email, Meetings
    • Suggestion for Intermediate • Version Control: Subversion, Git/Mercurial • Issue/Feature Tracking: trac, Mantis, Flyspray • Collaboration: Wiki, Google Docs • Code Review: Peer-to-peer review • Communication: IM, Email, Meetings
    • Suggestion for Experts • Version Control: Git/Mercurial • Integrated Project Management: JIRA, Redmine, Trac • Collaboration: Wiki, Google Docs • Code Review: Review Board, Crucible • QA Automation: Selenium, Watir, phpUnit • Continuos Integration: Hudson, CruiseControl
    • Tips for picking right tool • Tool that you can configure easily • Tool that complements your process (does not fight you) • Tool that your team can adjust with easily
    • Summary
    • Take-aways • Structure your project properly (use framework if possible) • Maintain good coding practice in team • Use tools to increase team efficiency
    • Questions?
    • References • Subversion • Redmine • Git • Trac • Mercurial • Selenium • Google Docs • Watir • Review Board • Hudson • JIRA • Cruise Control • Mantis • Flyspray • Basecamp • Dropbox