Lars Strojny has written up a new post about the current state of metaprogramming (software that writes other software) and how it sits in today's PHP functionality including some current features to make it happen.
Metaprogramming is quite an interesting sub-discipline and knowing about certain techniques and tools allows you to cut corners quite dramatically for certain tasks. As always, don't overdo but to find out when you are overdoing, first start doing, get excited, overdo, find out the right dose. Let's have a look at what kind of tools you have available in PHP to solve typical meta programming problems.
He starts by defining what kinds of things metaprogramming can and can't do (like type introspection, lower level syntax inspection and metadata management) and gets into what you can use in/with PHP for each. He mentions several tools, some internal to PHP - like the Reflection API and the Tokenizer extension - as well as external projects like the PHP-Parser, doctrine-common package.