Welcome to the official home of the PHP Heresy project!
What is this thing?
Heresy is a library for doing higher-order functional programming with PHP 5. It's about more power, less brain damage, and only half the suck.
What's heretical about it?
It goes against the grain of PHP programming, which is (as of PHP 5) heading into the Kingdom of Nouns.
Who is this not for?
("Willfull Ignorance") The first kind of wrong audience are people who just don't care anyway. There are plenty of people developing software (or managing programmers) nine-to-five, with it being a job they do without much concerning themselves with the merits of the popular tools and technologies used. When more lines of code equals job security, and dangerous, subversive new technologies are to be avoided at all costs, then Heresy is, of course, the wrong answer to the wrong problem. (But they already know that, and it's unlikely they'd find their way here in the first place.)
("A Little Knowledge") Heresy is also not for people who are hopelessly hung up on the ephemeral cargo cults of the day: object-oriented programming, design patterns, and the imperative mindset. It can't be helped that not everyone can recognize a cage for what it is, but at least the name of this project was explicitly chosen to ward off people incapable of, or uncomfortable, thinking out of the box. Shoo, begone.
("They Can't Handle It") Yet another kind of wrong audience are the do-gooder elitists: folks who believe that other people need to be protected from themselves, for instance by artificially limiting the expressivity of a programming language so that users don't hurt themselves because they don't (supposedly) know any better. These are the kind of blowhards who earnestly and steadfastly maintain that giving people more access to power tools would only mean they'd blow their heads off. (Of course, they may occasionally be perfectly correct, but it's still your head, to do with as you please. And you can always grow a new one.)
Needless to say, this previous point is not far off the mark as a design philosophy of PHP as a whole -- and that indeed is the raison d'être for this project.
("You Must Help Me") No, I must not; learn to help yourself, instead. Heresy is not for people who lack initiative, or who don't care to understand (when they need to) how it all works under the hood. Bug reports are welcome, certainly, but patches much more so.
Well, then, who is it for?
Now, despite best attempts to cull the audience by a not-insignificant margin with the verbiage above, there may, perhaps, still be a few scattered readers left. In that case, you may fit either of the following profiles (if you don't, send some feedback and this will get amended).
("No Closures, Are You Kidding Me?!!") First and foremost, Heresy is meant as a repository of power tools for the experienced polyglot programmer who is, for whatever reason, momentarily stuck with PHP. Hackers familiar with more powerful, dynamic programming languages (be it the likes of Python, Ruby, Smalltalk, Haskell or Lisp) are bound to find PHP's newbie-oriented constraints and imperative programming paradigm suffocating and rather unproductive for anything beyond small throw-away scripts. In other words, if you are capable of recognizing that PHP sucks (and why it does so) but are still compelled to use it, Heresy is for you. May some Heresy alleviate the frustration; you won't find anything "dumbed down" here.
("The Red Pill, Thanks") Heresy may also be of some interest to intermediate-level PHP programmers wishing to broaden their horizons and learn the sorts of dark arts not normally practiced in Java 101 or at Design Pattern HQ. Power to the people, set your mind free, and all that. Heresy can provide a gradual jumping point for embarking on your own ten-year wizard curriculum.
Won't all this hackery have a runtime performance impact?
In a word, yes. You have three options. First, you can abstain from Heresy and walk the straight and narrow (off you go). Second, you can do your part in lobbying the PHP core developers to finally give in and include, say, first-class functions and closures in the core language so that they don't have to be simulated in Heresy. Third, you can just bite the bullet and remember that this is your life ending a second at a time, and that you probably don't want to waste too much of it fighting merely incidental complexity. (It's good to keep in mind that the good Ruby folks have already successfully demonstrated a mental adjustment like this -- productivity over performance -- and are none the worse for it. You can, too.)