php-doc-en/internals/zendapi/using.xml

85 lines
2.8 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- $Revision: 1.1 $ -->
<sect1 id="zend.using">
<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='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 id='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 in your Web browser should give you the
output shown in <xref linkend='fig.out-first'/>.
<figure id='fig.out-first'>
<title>Output of first_module.php.</title>
<graphic fileref="figures/zend.02-first-module-output.png"/>
</figure>
</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>
</sect1>
<!-- 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:"../../../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
-->