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.)