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.
範例 28-1 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.)
注: The example source makes use of some features introduced with the Zend version used in PHP 4.1.0 and above, it won't compile with older PHP 4.0.x versions.
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 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.
Compiling Using Make. To compile the sample
sources using the standard mechanism, copy all their
subdirectories to the ext
directory of your PHP source tree. Then run buildconf, which will create an updated
configure script containing
appropriate options for the new extension. By default,
all the sample sources are disabled, so you don't have to
fear breaking your build process.
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 範例 28-1 can be
enabled with --enable-first_module
or --enable-first_module=yes.
Compiling Manually. To compile your modules
manually, you need the following commands:
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.)