I'm a experienced developer, usually developing in C# and Python, doing a lot of meta programming. To be honest: I don't like PHP, but the recent version look at least much more promissing that the older ones. I have to work in a PHP project in the near future, so I have to improve my skills in that area.
I'm looking for resources to learn the details of the PHP language as fast as possible. I'm of course able to read the documentation and I'm NOT looking for some printed API documentation.
I would like to understand the design ideas behind the languages and what kind of meta programming is possible at all.
Any hints?
First of all , stay as far from w3schools as far as you can.
The main source: PHP.NET .. the documentation is actually pretty good.
I would recommend to start with this book: PHP Object-Oriented Solutions , 2008, you can read a preview online. And maybe you can find something good in old PHP in Action, 2006. There is alos book Real-World Solutions for Developing High-Quality PHP Frameworks and Applications, but it is more about quality assurance and TDD in php projects.
You could also watch/listen to :
The rest of the stuff is common for all the languages. Just re-read some materials written by Martin Fowler or Robert C. Martin.
And maybe watch some lectures from "Clean Code Talks" :
If been in the same situation, coming from C# company building big enterprise applications, needing to create php web applications.
First I did was looking into the various PHP frameworks, because .NET is a framework on itself (and C# just one of the available languages), I like too look at PHP the same way. Altough the language PHP has it's 'quirks', it should never be a problem for any programmer. Just look into PHP.net to get the basics about OO in PHP. (There are some differences with C#), and get up to speed with the syntax in PHP. So with PHP, there are different frameworks which take care of the basics in building any (web)application. There's the big Zend Framework, MVC frameworks like Symfony, Code Igniter, and CakePHP, and even microframeworks specializing on one task.
I suggest you choose one framework (I myself chose Symfony, but you'll have to make that choice for yourself), and learn developing on that framework. All frameworks I mentioned in the paragraph before, work with some kind of 'metaprogramming'. Symfony for example uses yml
files to generate the data layer, set up routing and configure security. ZF by default uses xml to do this.
I don't think there is much of a consistent 'Design-Idea' behind the core PHP project. I would suggest to instead look at some of the Frameworks.
Meta-Programming in general:
There isn't much, especially when you remove everything that is on the one hand a language construct, but considered dirty nowadays. You should look at magic methods in this case.