mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-20 10:58:54 +00:00
85 lines
2.8 KiB
XML
85 lines
2.8 KiB
XML
![]() |
<?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
|
||
|
-->
|