Highlights from ZendCon
'08
Bradley Holt
Facts About ZendCon '08
- 4th annual Zend/PHP conference
- Over 650 attendees from around the world
- Over 60 sessions and tutorials not counting the UnCon
- This year's theme was "High Impact PHP"
Announcements
- Release of Zend Studio 6.1
- Partnership with Adode on Zend_Amf
- Release of Zend Core 2.6 for IBM System i
- Dojo integration in Zend Framework
- Zend Framework certification
Sessions
- PHP Developer Best Practices
- Matthew Weier O'Phinney (Zend Technologies, Ltd.)
- Mike Naberezny (Maintainable Software)
- Quality Assurance in PHP Projects
- Sebastian Bergmann (sebastian-bergmann.de)
- Join-fu: The Art of SQL Tuning for MySQL
- Jay Pipes (MySQL)
Sessions (cont'd)
- Static and Dynamic Analysis at Ning
- David Sklar (Ning, Inc.)
- The Knight Rider Methodology to Software Development
- Eli White (TravelPod / Expedia)
- Test Driven Development
- Derick Rethans (eZ Systems)
ElePHPants

ElePHPants
(cont'd)

ElePHPants
(cont'd)

ElePHPants (cont'd)

PHP Developer Best
Practices
- Source control (centralized or distributed)
- Coding standards (Don't invent your own!)
- Design patterns
- Testing (unit tests, code coverage, continuous integration,
Selenium)
- Documentation (source and end user)
- Deployment (Don't edit files on production!)
Slides: http://mikenaberezny.com/2008/09/16/php-developer-best-practices/
Quality Assurance in PHP Projects
- Functional tests (PHPUnit)
- Acceptance/system tests (Selenium)
- Compatibility tests
- Performance tests
- Security tests
Join-fu: The Art of SQL Tuning for MySQL
- Schema is basic foundation of performance
- Smaller rows are better
- Use VARCHAR carefully (converted to CHAR when used in a temporary
table) as well as TEXT and BLOBs
- Vertical partitioning (splitting tables with many columns into
multiple tables)
Static and Dynamic Analysis at Ning
- Static analysis: looking at source code
- Dynamic analysis: looking at running code
- Enforce coding standards, check deprecated usage, monitor
performance, evaluate API change impact
- Regexes in unit tests
- PHP tokenizer in unit tests and stand-alone analysis
Knight Coder
"A shadowy flight into the dangerous world of a man who uses tools
& technologies to make better coders."
- Editor: code completion, tool tips, regex search & replace,
context sensitive highlighting, extensibility
- Profiler: Xdebug, valgrind/callgrind, kcachegrind, APD
- Load tester: http_load, siege, Apache Bench
- Performance tools: APC, Memcahed, Gearman
- Libraries: PECL, PEAR, JavaScript libraries
Knight Coder (cont'd)
- Debugger: Zend Studio, Xdebug, dbg, APD, var_dump, Firebug, Web
Developer Toolbar
- Test suites: PHPUnit, SimpleTest, PHPT, Selenium
- Multi-tier servers: development, integration, testing, staging,
production
- PHP error reporting: E_ALL & E_STRICT
- Version control: Subversion, CVS, Git
Knight Coder (cont'd)
- Lint: php -l, PHPLint, hook into version control
- PHP_CodeSniffer: coding standards, hook into version control
- GUIs: DB maintenance, version control, etc.
- Little things: rsync, grep, find. sed, cut
- Hardware: much cheaper than people
- Social networking
Slides: http://eliw.com/conference/zendcon-2008-KnightRider.pdf
Test Driven Development
- Test first, then code
- Also test things that should fail
- Requirements, design, implementation/testing
- Write API stubs/documentation, write tests cases (fail), implement
code (pass)
Test Driven Development
(cont'd)
- Write test cases for bugs and feature requests first
- Code and test are one
- Code that does not have 100% coverage is not full tested.
- 100% code coverage does not mean your code is fully tested.
Slides: http://www.derickrethans.nl/files/tdd-zendcon8.pdf
Misc
- Phar
- Magento
- State of Ajax
- Continuous integration (phpUnderControl)