File: functions.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (391 lines) | stat: -rw-r--r-- 11,459 bytes parent folder | download
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.24 Maintainer: goba Status: ready -->
<!-- CREDITS: kgergely,gerzson -->

 <chapter id="functions">
  <title>Fggvnyek</title>

  <sect1 id="functions.user-defined">
   <title>Felhasznl ltal definilt fggvnyek</title>

   <para>
    Fggvnyeket a kvetkez szintaxis szerint definilhatod:   <informalexample>
     <programlisting role="php">
<![CDATA[
function foo ($arg_1, $arg_2, ..., $arg_n)
{
    echo "Plda fggvny.\n";
    return $retval;
}
]]>
     </programlisting>
    </informalexample>
   </para>

   <simpara>
    Brmely rvnyes PHP kd megjelenhet egy fggvnyen bell,
    akr mg ms fggvny vagy
    <link linkend="keyword.class">osztly</link>
    defincik is.
   </simpara>
   <simpara>
    PHP 3-ban a fggvnyeket definilni kell, mieltt hivatkozs trtnik rjuk 
    (fggvnyhvs eltt).
    PHP 4-ben nincs ez a megkts.
   </simpara>
   <simpara>
    A PHP nem tmogatja a fggvnyek polimorfizmust (tbbalaksgt), a 
    fggvnyekdefincikat nem lehet megszntetni vagy jradefinilni egy 
    mr definilt fggvnyeket.
   </simpara>
   <simpara>
    A PHP 3 nem tmogatja a vltoz szm fggvnyargumentumokat, br
    az argumentumok kezdrtke tmogatott. Lsd az
		<link linkend="functions.arguments.default">Argumentumok kezdrtke</link>
    cm rszt bvebb informcirt.
    A PHP 4 mindkett lehetsget tmogatja. Lsd
    a <link linkend="functions.variable-arg-list">Vltoz szm fggvnyargumentumok</link>
    cm rszt s a <function>func_num_args</function>, <function>func_get_arg</function> s a
    <function>func_get_args</function> fggvnyeket rszletesebb lersrt.
   </simpara>

  </sect1>

  <sect1 id="functions.arguments">
   <title>Fggvnyargumentumok</title>

   <simpara>
    Az informci a fggvnyekhez az argumentumlistn keresztl jut el,
    ami egy vesszvel hatrolt vltoz s/vagy konstanslista.
   </simpara>
   <para>
     A PHP tmogatja az rtk szerinti (ez az alaprtelmezett)
     <link linkend="functions.arguments.by-reference">referenciaknti
		 paramtertadst</link> is, s az <link
		 linkend="functions.arguments.default">argumentumok kezdrtkt</link>.
     A vltoz hosszsg argumentumlistk csak a PHP 4-ben jelentek meg.
     Lsd a <link linkend="functions.variable-arg-list">vltoz
		 hosszsg argumentumlistkat</link> s a <function>func_num_args</function>,
     <function>func_get_arg</function> s a <function>func_get_args</function>
		 fggvnyeket rszletesebb lersrt. PHP 3-ban hasonl hats rhet el 
		 a fggvnynek tmb tpus vltoz paramterknt trtn tadsval:
    <informalexample>
     <programlisting role="php">
<![CDATA[
function tombot_kezel($input)
{
    echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
]]>
     </programlisting>
    </informalexample>
   </para>

   <sect2 id="functions.arguments.by-reference">
    <title>Referencia szerinti argumentumfeltlts</title>

    <simpara>
     Alaprtelmezsben a fggvny paramterei rtk szerint addnak t
     (vagyis ha megvltoztatod a vltozt a fggvnyen bell, annak a
     fggvnyen kvlre nincs hatsa). Ha szeretnd megengedni, hogy
     a fggvny mdostsa az tadott paramtereket, referencia szerint 
     kell tadni azokat.
    </simpara>
    <para>
     Ha egy fggvnyargumentum mindig referencia szerint kell tadni,
     akkor a fggvnydefinciban az argumentum neve el egy &amp; 
     jelet kell rni.
     <informalexample>
      <programlisting role="php">
<![CDATA[
function fgv_extrakkal(&$string)
{
    $string .= 's a szksges plusssz.';
}
$str = 'Ez egy karakterfzr, ';
fgv_extrakkal($str);
echo $str;    // kirja, hogy 'Ez egy karakterfzr, s a szksges plusssz.'
]]>
      </programlisting>
     </informalexample>
    </para>
   </sect2>

   <sect2 id="functions.arguments.default">
    <title>Argumentumok kezdrtkei</title>

    <para>
     Brmely fggvny skalr-argumentumainak megadhatsz kezdrtket
     a C++ szintaxisnak megfelelen:
     <informalexample>
      <programlisting role="php">
<![CDATA[
function kavet_csinal ($tipus = "cappucino")
{
    return "Csinlok egy pohr " . $tipus . "t.\n";
}
echo kavet_csinal ();
echo kavet_csinal ("espresso");
]]>
      </programlisting>
     </informalexample>
    </para>

    <para>
     A fenti kd kimenete:
     <screen>
Csinlok egy pohr cappucinot.
Csinlok egy pohr espressot.
     </screen>
    </para>

    <simpara>
     A kezdrtknek konstans kifejezsnek kell lennie, nem lehet
     pl. vltoz vagy objektum.
    </simpara>
    <para>
     Figyelj arra, hogy a kezdrtkkel rendelkez argumentumok ms argumentumoktl 
     jobbra helyezkedjenek el; klnben a dolgok nem gy mennek majd, ahogy azt vrnd 
     [hanem gy, ahogy rtad :)]. Lsd a kvetkez kdot:
     <informalexample>
      <programlisting role="php">
<![CDATA[
function joghurtot_keszit ($type = "acidophilus", $flavour)
{
    return "Ksztek egy kcsg $flavour z $type-t.\n";
}

echo joghurtot_keszit ("eper");   // nem gy mkdik, mint szeretnd !?!?
]]>
      </programlisting>
     </informalexample>
    </para>

    <para>
    A fenti plda kimenete:
     <screen>
Warning: Missing argument 2 in call to joghurtot_keszit() in
/usr/local/etc/httpd/htdocs/phptest/functest.php on line 41
Ksztek egy kcsg z eper-t.
     </screen>
    </para>

    <para>
     Most hasonltsd ssze az albbival:

     <informalexample>
      <programlisting role="php">
<![CDATA[
function joghurtot_keszit ($flavour, $type = "acidophilus")
{
    return "Ksztek egy kcsg $flavour z $type-ot.\n";
}

echo joghurtot_keszit ("eper");   // ez mr j
]]>
      </programlisting>
     </informalexample>
    </para>

    <para>
    A fenti plda kimenete:
     <screen>
Ksztek egy eper z acidophilus-t.
     </screen>
    </para>
    <note>
      <simpara>
        [Azrt vannak kiskapuk...
         Az argumentumokat adjuk t egy asszociatv tmbben!
				 Az alaprtkeket pedig egy msik tmbben.
         Ezutn vegyk vgig az alaprtkeket tartalmaz tmb elemeit.
         Ha nem definiltak a kapott tmbben, akkor rjuk fell
				 az alaprtkeket tartalmaz tmb megfelel elemvel.
				 gy brmelyik argumentum elhagyhat, st mg annyit is
         nyernk a dolgon, hogy nem kell megjegyeznnk a
				 paramterek sorrendjt. (forrs: egy b lre
				 eresztett amerikai PHP 3 knyv)]
      </simpara>
    </note>

   </sect2>

   <sect2 id="functions.variable-arg-list">
    <title>Vltoz hosszsg argumentumlista</title>

    <simpara>
     A PHP 4 tmogatja a vltoz hosszsg argumentumlistt a
     felhasznlk ltal definilt fggvnyekben. Valban nagyon
     egyszer kezelni ezt a <function>func_num_args</function>,
     <function>func_get_arg</function> s a
     <function>func_get_args</function> fggvnyekkel.
    </simpara>

    <simpara>
     Semmilyen klnleges szintakszist nem ignyel s az argumentumlista
     lehet explicit mdon adott s viselkedhet gy is, mint egy norml fggvny.
    </simpara>

   </sect2>

  </sect1>

  <sect1 id="functions.returning-values">
   <title>Visszatrsi rtkek</title>

   <para>
    Az elhagyhat return lltst hasznlva adhatnak vissza rtket
    a fggvnyek. Brmely tpus visszaadhat, belertve a listkat
    s az objektumokat is. A fggvny vgrehajtsa azonnal befejezdik,
    s a vezrls visszakerl a fggvnyhvs utni pozciba. 
    Tovbbi rszletes informcikrt lsd: <function>return</function>!  
    <informalexample>
     <programlisting role="php">
<![CDATA[
function negyzete ($num)
{
    return $num * $num;
}
echo negyzete (4);   // kirja '16'.
]]>
     </programlisting>
    </informalexample>
    <note>
     <simpara>
      [Ha nincs return, az utols kifejezs rtkvel tr viszsza a fggvny]
     </simpara>
    </note>
   </para>

   <para>
    Tbb rtket nem tud visszaadni a fggvny, de hasonl
    hats rhet el ezen tbbszrs rtkek listba szervezsvel.
    <informalexample>
     <programlisting role="php">
<![CDATA[
function kis_szamok()
{
    return array (0, 1, 2);
}
list ($nulla, $egy, $ketto) = kis_szamok();
]]>
     </programlisting>
    </informalexample>
   </para>
   <para>
    Ha a fggvnynek referencival kell visszatrnie, akkor az &amp; referencia 
    opertort kell alkalmaznod a fggvny deklarskor s a a visszatrsi rtk
    megadsakor is.
    <informalexample>
     <programlisting role="php">
<![CDATA[
function &referenciat_ad_vissza()
{
    return &$valtozo;
}

$hivatkozas = &referenciat_ad_vissza();
]]>
     </programlisting>
    </informalexample>
   </para>
   <simpara>  
    Tovbbi informcikrt lsd a <link  
    linkend="language.references">Referencik</link> fejezetet!  
   </simpara>  
  </sect1>

  <sect1 id="functions.old-syntax">
   <title><literal>old_function</literal></title>

   <simpara>
    Az <literal>old_function</literal> kifejezs lehetv teszi
    fggvny deklarlst a PHP/FI2 szintakszisnak megfelelen
    (kivve persze, hogy a 'function'-t ki kell cserlned 'old_function'-ra)
   </simpara>
   <simpara>
    Ez egy ellenjavallt tulajdonsg, s csak a PHP/FI2->PHP 3 konverter
    hasznlhatja.
   </simpara>
   <warning>
    <para>
     Az <literal>old_function</literal> segtsgvel deklarlt fggvnyeket
     nem hvhatod a PHP bels rszbl. Tbb minden mellett ez azt jelenti, hogy
     nem hasznlhatod olyan fggvnyekben, mint az
     <function>usort</function>, <function>array_walk</function>, s a
     <function>register_shutdown_function</function>.
     Ez a korltozs megkerlhet egy olyan keretfggvny megrsval (norml PHP 3 formban),
     amely meghvja az <literal>old_function</literal>-t.
    </para>
   </warning>

  </sect1>

  <sect1 id="functions.variable-functions">
   <title>Fggvnyvltozk</title>

   <para>
    A PHP lehetv teszi a fggvnyvltozk hasznlatt.
    Ha egy vltoznevet kerek zrjelek kvetnek, akkor a PHP megkeresi 
    a vltoz rtkvel azonos nev fggvnyt, s megprblja azt vgrehajtani.
    Ezt tbbek kztt visszahvand (callback) fggvnyek vagy fggvnytblk 
    implementlsra hasznlhat.
   </para>

   <para>
    A fggvnyvltozk nem fognak mkdni az olyan nyelvi elemekkel, mint
    pldul az <function>echo</function>, <function>unset</function>,
    <function>isset</function> vagy <function>empty</function>. Ez az
    egyik legjelentsebb klnbsg a PHP fggvnyek s nyelvi elemek kztt.
   </para>

   <para>
    <example>
     <title>Fggvnyvltoz plda</title>
     <programlisting role="php">
<![CDATA[
<?php
function ize()
{
    echo "Az ize()-ben<br>\n";
}

function bigyo($param = '')
{
    echo "A bigyo()-ban; az argumentum:'$param'.<br>\n";
}

$func = 'ize';
$func();
$func = 'bigyo';
$func('Stex van Boeven');
?>
]]>
     </programlisting>
    </example>
   </para>

  </sect1>

 </chapter>

 <!-- 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
 -->