Look beyond PHP




02/29/2012 | fabien.potencier.org | @fabpot
Why?
A Web Developer




                  http://www.flickr.com/photos/dunechaser/160405823
A Web Developer




                  http://www.flickr.com/photos/dunechaser/142079357
Master PHP first
levenshtein()
http://twig-project.org/extend
spl_object_hash()
$o1 = new stdClass();

$o2 = new stdClass();

spl_object_hash($o1) !== spl_object_hash($o2);

spl_object_hash($o1) === spl_object_hash($o1);
Traits in PHP 5.4?
Learn the basics
JavaScript
HTTP / RFC 2616


http://tools.ietf.org/wg/httpbis/
Use the right tools...
IDE / Editor
Use the right tool for the job
Use software written in other languages...
         don't reinvent the wheel
ConFoo - Migrating MVC to the front-end using Backbone JS by Martin Drapeau
Juggernaut



ConFoo - Realtime Web Apps with WebSockets by Igor Wiedler
ConFoo - Build more with LESS CSS by Jake Smith
ConFoo - High traffic website search with Apache Solr by Satish Tallapaka
ConFoo - ElasticSearch [R]evolution: Welcome by Andrei Zmievski
Varnish




ConFoo - Varnish, the easy way to speed up your websites by me
ConFoo - Scaling with MongoDB by Rick Copeland
ConFoo - Redis - Your advanced in-memory key-value store by Jordi Boggiano
Learn from other's code...
 whatever the language
Python
from bottle import route, run

@route('/hello/:name')
def index(name='World'):
   return '<b>Hello %s!</b>' % name

run(host='localhost', port=8080)
Jinja2... Twig
Logbook... Monolog
Webassets... Assetic
http://www.flickr.com/photos/davemorris/3431970729
http://www.flickr.com/photos/hawkexpress/328322067
Symfony2



ZF


CakePHP


Django

Rails
This also applies to
documentation and processes
PEP vs PSR/RFC
PEP 20 - The Zen of Python
                      Beautiful is better than ugly.
                     Explicit is better than implicit.
                     Simple is better than complex.
                  Complex is better than complicated.
                        Flat is better than nested.
                       Sparse is better than dense.
                           Readability counts.
         Special cases aren't special enough to break the rules.
                   Although practicality beats purity.
                    Errors should never pass silently.
                        Unless explicitly silenced.
       In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
 Although that way may not be obvious at first unless you're Dutch.
                        Now is better than never.
            Although never is often better than *right* now.
        If the implementation is hard to explain, it's a bad idea.
   If the implementation is easy to explain, it may be a good idea.
  Namespaces are one honking great idea -- let's do more of those!
PSR-0
“Mandatory requirements that must be adhered to for autoloader
                     interoperability.”


                   https://github.com/php-fig
Javadoc vs Phpdoc
ReST / Sphinx
What can we learn from others?
What should you learn now?
Be curious



             Be passionate
              Be Curious
Thank You

Look beyond PHP