We'll start with the creation of a very simple extension at first, which
   basically does nothing more than implement a function that returns the
   integer it receives as parameter. Example 46-2 shows the source.
  
   This code contains a complete PHP module. We'll explain the source
   code in detail shortly, but first we'd like to discuss the build
   process. (This will allow the impatient to experiment before we
   dive into API discussions.)
  
    There are basically two ways to compile modules: 
    
       Use the provided "make" mechanism in the
       ext directory, which also allows building
       of dynamic loadable modules.
      
Compile the sources manually.
 
    The first method should definitely be favored,
    since, as of PHP 4.0, this has been standardized into a
    sophisticated build process. The fact that it is so sophisticated
    is also its drawback, unfortunately - it's hard to understand at
    first. We'll provide a more detailed introduction to this later in
    the chapter, but first let's work with the default files.
   
    The second method is good for those who (for some reason) don't
    have the full PHP source tree available, don't have access to all
    files, or just like to juggle with their keyboard. These cases
    should be extremely rare, but for the sake of completeness we'll
    also describe this method.
   
    After you run buildconf, configure
     --help shows the following additional modules: 
   
--enable-array_experiments   BOOK: Enables array experiments
  --enable-call_userland       BOOK: Enables userland module
  --enable-cross_conversion    BOOK: Enables cross-conversion module
  --enable-first_module        BOOK: Enables first module
  --enable-infoprint           BOOK: Enables infoprint module
  --enable-reference_test      BOOK: Enables reference test module
  --enable-resource_test       BOOK: Enables resource test module
  --enable-variable_creation   BOOK: Enables variable-creation module  | 
    The module shown earlier in Example 46-2  
    can be enabled with
    --enable-first_module or
    --enable-first_module=yes.
   
    Note: All include paths in the example are
    relative to the directory ext. If you're
    compiling from another directory, change the pathnames
    accordingly. Required items are the PHP directory, the
    Zend directory, and (if necessary), the
    directory in which your module resides.
   
    The link command is also a plain vanilla command instructing linkage as a dynamic module.
   
    You can include optimization options in the compilation
    command, although these have been omitted in this example (but some are included in the makefile
    template described in an earlier section).
   
    Note: Compiling and linking manually as a
    static module into the PHP binary involves very long instructions
    and thus is not discussed here. (It's not very efficient to type
    all those commands.)