function.bcompiler-write-exe-footer.html
9.23 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Writes the start pos, and sig to the end of a exe type file</title>
</head>
<body><div class="manualnavbar" style="text-align: center;">
<div class="prev" style="text-align: left; float: left;"><a href="function.bcompiler-write-constant.html">bcompiler_write_constant</a></div>
<div class="next" style="text-align: right; float: right;"><a href="function.bcompiler-write-file.html">bcompiler_write_file</a></div>
<div class="up"><a href="ref.bcompiler.html">bcompiler Funktionen</a></div>
<div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="function.bcompiler-write-exe-footer" class="refentry">
<div class="refnamediv">
<h1 class="refname">bcompiler_write_exe_footer</h1>
<p class="verinfo">(PECL bcompiler >= 0.4)</p><p class="refpurpose"><span class="refname">bcompiler_write_exe_footer</span> — <span class="dc-title">Writes the start pos, and sig to the end of a exe type file</span></p>
</div>
<div class="refsect1 description" id="refsect1-function.bcompiler-write-exe-footer-description">
<h3 class="title">Beschreibung</h3>
<div class="methodsynopsis dc-description">
<span class="type">bool</span> <span class="methodname"><strong>bcompiler_write_exe_footer</strong></span>
( <span class="methodparam"><span class="type">resource</span> <code class="parameter">$filehandle</code></span>
, <span class="methodparam"><span class="type">int</span> <code class="parameter">$startpos</code></span>
)</div>
<p class="para rdfs-comment">
An EXE (or self executable) file consists of 3 parts:
<ul class="simplelist">
<li class="member">
The <em>stub</em> (executable code, e.g. a compiled C program) that loads PHP
interpreter, bcompiler extension, stored Bytecodes and initiates a call
for the specified function (e.g. main) or class method (e.g. <em>main::main</em>)
</li>
<li class="member">The Bytecodes (uncompressed only for the moment)</li>
<li class="member">The bcompiler EXE footer</li>
</ul>
</p>
<p class="para">
To obtain a suitable stub you can compile php_embed-based stub <var class="filename">phpe.c</var>
located in the <var class="filename">examples/embed</var> directory on bcompiler's CVS.
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.bcompiler-write-exe-footer-parameters">
<h3 class="title">Parameter-Liste</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">filehandle</code></dt>
<dd>
<p class="para">
A file handle as returned by <span class="function"><a href="function.fopen.html" class="function">fopen()</a></span>.
</p>
</dd>
<dt>
<code class="parameter">startpos</code></dt>
<dd>
<p class="para">
The file position at which the Bytecodes start, and can be obtained
using <span class="function"><a href="function.ftell.html" class="function">ftell()</a></span>.
</p>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.bcompiler-write-exe-footer-returnvalues">
<h3 class="title">Rückgabewerte</h3>
<p class="para">
Gibt bei Erfolg <strong><code>TRUE</code></strong> zurück. Im Fehlerfall wird <strong><code>FALSE</code></strong> zurückgegeben.
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.bcompiler-write-exe-footer-examples">
<h3 class="title">Beispiele</h3>
<p class="para">
<div class="example" id="example-398">
<p><strong>Beispiel #1 <span class="function"><strong>bcompiler_write_exe_footer()</strong></span> example</strong></p>
<div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB"><?php<br /><br /></span><span style="color: #FF8000">/* creating the output file (example.exe) */<br /></span><span style="color: #0000BB">$fh </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"example.exe"</span><span style="color: #007700">, </span><span style="color: #DD0000">"w"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* 1) writing a stub (phpe.exe) */<br /></span><span style="color: #0000BB">$size </span><span style="color: #007700">= </span><span style="color: #0000BB">filesize</span><span style="color: #007700">(</span><span style="color: #DD0000">"phpe.exe"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$fr </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"phpe.exe"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">, </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$fr</span><span style="color: #007700">, </span><span style="color: #0000BB">$size</span><span style="color: #007700">), </span><span style="color: #0000BB">$size</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$startpos </span><span style="color: #007700">= </span><span style="color: #0000BB">ftell</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* 2) writing bytecodes */<br /></span><span style="color: #0000BB">bcompiler_write_header</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">bcompiler_write_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">, </span><span style="color: #DD0000">"myclass"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">bcompiler_write_function</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">, </span><span style="color: #DD0000">"main"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">bcompiler_write_footer</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* 3) writing EXE footer */<br /></span><span style="color: #0000BB">bcompiler_write_exe_footer</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">, </span><span style="color: #0000BB">$startpos</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* closing the output file */<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fh</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></span>
</span>
</code></div>
</div>
</div>
</p>
</div>
<div class="refsect1 notes" id="refsect1-function.bcompiler-write-exe-footer-notes">
<h3 class="title">Anmerkungen</h3>
<div class="warning"><strong class="warning">Warnung</strong><p class="simpara">Diese Funktion ist
<em class="emphasis">EXPERIMENTELL</em>. Das Verhalten, der Funktionsname und alles
Andere, was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne
Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Funktion auf
eigenes Risiko.</p></div>
</div>
<div class="refsect1 seealso" id="refsect1-function.bcompiler-write-exe-footer-seealso">
<h3 class="title">Siehe auch</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="function.bcompiler-write-header.html" class="function" rel="rdfs-seeAlso">bcompiler_write_header()</a> - Writes the bcompiler header</span></li>
<li class="member"><span class="function"><a href="function.bcompiler-write-class.html" class="function" rel="rdfs-seeAlso">bcompiler_write_class()</a> - Writes a defined class as bytecodes</span></li>
<li class="member"><span class="function"><a href="function.bcompiler-write-footer.html" class="function" rel="rdfs-seeAlso">bcompiler_write_footer()</a> - Writes the single character \x00 to indicate End of compiled data</span></li>
</ul>
</p>
</div>
</div><hr /><div class="manualnavbar" style="text-align: center;">
<div class="prev" style="text-align: left; float: left;"><a href="function.bcompiler-write-constant.html">bcompiler_write_constant</a></div>
<div class="next" style="text-align: right; float: right;"><a href="function.bcompiler-write-file.html">bcompiler_write_file</a></div>
<div class="up"><a href="ref.bcompiler.html">bcompiler Funktionen</a></div>
<div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>