1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 297078 $ -->
<sect2 xml:id="internals2.ze1.zendapi.using" xmlns="http://docbook.org/ns/docbook">
<title>Using Extensions</title>
<para>
Depending on the build process you selected, you should either end up
with a new PHP binary to be linked into your Web server (or run as CGI), or with an .so (shared object) file. If you compiled the
example file <filename>first_module.c</filename> as a shared object, your result file
should be <filename>first_module.so</filename>. To use it, you first have to copy
it to a place from which it's accessible to PHP. For a simple test procedure,
you can copy it to your <filename>htdocs</filename> directory and try it with
the source in <xref linkend="internals2.ze1.zendapi.example.testfile"/>.
If you compiled it into the PHP binary,
omit the call to <function>dl</function>, as the module's
functionality is instantly available to your scripts.
<warning>
<para>
For security reasons, you <emphasis>should not</emphasis> put your
dynamic modules into publicly accessible directories. Even though it <emphasis>can</emphasis> be
done and it simplifies testing, you should put them into a separate directory
in production environments.
</para>
</warning>
</para>
<example xml:id="internals2.ze1.zendapi.example.testfile">
<title>A test file for first_module.so.</title>
<programlisting role='php'>
<![CDATA[
<?php
// remove next comment if necessary
// dl("first_module.so");
$param = 2;
$return = first_module($param);
print("We sent '$param' and got '$return'");
?>
]]>
</programlisting>
</example>
<para>
Calling this PHP file should output the following:
<screen>
<![CDATA[
We sent '2' and got '2'
]]>
</screen>
</para>
<para>
If required, the dynamic loadable module is loaded by calling the
<function>dl</function> function. This function looks for the
specified shared object, loads it, and makes its functions
available to PHP. The module exports the function
<function>first_module</function>, which accepts a single
parameter, converts it to an integer, and returns the result of the
conversion.
</para>
<para>
If you've gotten this far, congratulations! You just built your
first extension to PHP.
</para>
</sect2>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|