Strings are handled a bit differently by the Zend
engine than other values such as integers, Booleans, etc.,
which don't require additional memory allocation for storing
their values. If you want to return a string from a function,
introduce a new string variable to the symbol table, or do
something similar, you have to make sure that the memory the
string will be occupying has previously been allocated, using
the aforementioned
e*()
functions for allocation. (This might not make much sense to
you yet; just keep it somewhere in your head for now - we'll
get back to it shortly.)