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