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 (339 lines) | stat: -rw-r--r-- 10,004 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
<?xml version="1.0" encoding="iso-8859-1"?>
 <chapter id="functions">
  <title>Funes</title>

  <sect1 id="functions.user-defined">
   <title>Funes definidas pelo usurio</title>
 
   <para>
    Uma funo pode ser definida usando-se a sintaxe como a seguinte:
 
    <informalexample>
     <programlisting role="php">
function foo ($arg_1, $arg_2, ..., $arg_n) {
    echo "Funo-exemplo.\n";
    return $retval;
}
     </programlisting>
    </informalexample>
   </para>
     
   <simpara>
    Qualquer cdigo PHP vlido aparece dentro de uma funo, mesmo outras funes
    e definies de <link linkend="keyword.class">classes</link>.
   </simpara>
   <simpara>
    No PHP3, as funes precisam ser definidas antes de serem referenciadas. Esse
    requisito no existe no PHP4.
   </simpara>
   <simpara>
    O PHP no suporta sobrecarga de funes, e tambm no  possvel cancelar ou
    alterar a definio de funes previamente declaradas.
   </simpara>
   <simpara>
    O PHP3 no suporta nmero varivel de argumentos para funes, apesar de os 
    argumentos padres serem suportados (veja <link
    linkend="functions.arguments.default">Valores padro de argumentos
    </link> para mais informaes). O PHP4 suporta ambos: veja <link
    linkend="functions.variable-arg-list">Listas de argumentos com comprimento
    varivel</link> e as referncias de funo de
    <function>func_num_args</function>,
    <function>func_get_arg</function>, e
    <function>func_get_args</function> para mais informaes.
   </simpara>

  </sect1>
 
  <sect1 id="functions.arguments">
   <title>Argumentos de funes</title>
 
   <simpara>
    Informao pode ser passada para funes atravs da lista de argumentos, que  uma 
    lista de variveis e/ou constantes delimitados por vrgulas.
   </simpara> 
   <para>
     O PHP suporta a passagem de argumentos por valor (o padro), <link
     linkend="functions.arguments.by-reference">passagem por referncia
     </link>, e <link
     linkend="functions.arguments.default">valores padro de argumento
     </link>. Listas de argumentos de comprimento varivel so suportadas apenas
     no PHP4 e posteriores; veja <link
     linkend="functions.variable-arg-list">Listas de argumentos de comprimento 
     varivel</link> e as referncias de funo de
     <function>func_num_args</function>,
     <function>func_get_arg</function>, e
     <function>func_get_args</function> para mais informaes. Um efeito similar
     pode ser atingido no PHP3 pela passagem de uma matriz de argumentos para uma
     funo:
 
    <informalexample>
     <programlisting role="php">
function takes_array($input) {
    echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
     </programlisting>
    </informalexample>
   </para>
 
   <sect2 id="functions.arguments.by-reference">
    <title>Fazendo argumentos serem passados por referncia</title>
 
    <simpara>
     Por padro, argumentos de funo so passados por valor (de forma que se
     voc mudar o valor do argumento dentro da funo, ele no  mudado fora
     da funo). Se voc deseja permitir que uma funo modifique seus argumentos,
     voc precisa pass-los por referncia.
    </simpara>
    <para>
     Se voc quer que um argumento para uma funo sempre seja passado por
     referncia, voc pode preceder o nome do argumento com um "e comercial" (&amp;)
     na definio da funo:
 
     <informalexample>
      <programlisting role="php">
function add_some_extra(&amp;$string) {
    $string .= 'e algo mais.';
}
$str = 'Isto  uma string, ';
add_some_extra($str);
echo $str;    // outputs 'Isto  uma string, e algo mais.'
      </programlisting>
     </informalexample>
    </para>
 
    <para>
     Se voc deseja passar uma varivel por referncia a uma funo que no faz isto por
     padro, voc pode preceder o nome do argumento com um "e comercial" na chamada da
     funo:
 
     <informalexample>
      <programlisting role="php">
function foo ($bar) {
    $bar .= ' e algo mais.';
}
$str = 'Isto  uma string, ';
foo ($str);
echo $str;    // outputs 'Isto  uma string, '
foo (&amp;$str);
echo $str;    // outputs 'Isto  uma string, e algo mais.'
      </programlisting>
     </informalexample>
    </para>

   </sect2>
 
   <sect2 id="functions.arguments.default">
    <title>Valores padro de argumentos</title>
 
    <para>
     Uma funo pode definir valores padro no estilo C++ para argumentos escalares, como
     a seguir:
 
     <informalexample>
      <programlisting role="php">
function makecoffee ($type = "cappucino") {
    return "Fazendo uma xcara de $type.\n";
}
echo makecoffee ();
echo makecoffee ("caf expresso");
      </programlisting>
     </informalexample>
    </para>
 
    <para>
     The output from the above snippet is:
 
     <screen>
Fazendo uma xcara de cappucino.
Fazendo uma xcara de caf expresso.
     </screen>
    </para>
 
    <simpara>
     O valor padro precisa ser uma expresso constante, no (por
     exemplo) uma varivel ou um membro de classe.
    </simpara>
    <para>
     Note que usando argumentos padro, qualquer padro dever estar do lado
     direito de argumentos no-padro; caso contrrio, as coisas no funcionaro
     como esperado. Considere o seguinte trecho de cdigo:
 
     <informalexample>
      <programlisting role="php">
function makeyogurt ($type = "azeda", $flavour) {
    return "Fazendo uma taa de $flavour $type.\n";
}
 
echo makeyogurt ("framboesa");   // no vai funcionar como o esperado
      </programlisting>
     </informalexample>
    </para>
 
    <para>
     A sada do exemplo acima :
 
     <screen>
Warning: Missing argument 2 in call to makeyogurt() in 
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Fazendo uma taa de framboesa.
     </screen>
    </para>
 
    <para>
     Agora, compare o que est acima com este:
 
     <informalexample>
      <programlisting role="php">
function makeyogurt ($flavour, $type = "azeda") {
    return "Fazendo uma taa de $flavour $type.\n";
}
 
echo makeyogurt ("framboesa");   // funciona como o esperado
      </programlisting>
     </informalexample>
    </para>
 
    <para>
     A sada deste exemplo :
 
     <screen>
Fazendo uma taa de framboesa azeda.
     </screen>
    </para>

   </sect2>

   <sect2 id="functions.variable-arg-list">
    <title>Listas de argumentos de comprimento varivel</title>
	
    <simpara>
     O PHP4 tem suporte para listas de argumentos de comprimento varivel
     nas funes definidas pelo usurio. Isto  realmente bem fcil, usando 
     as funes <function>func_num_args</function>,
     <function>func_get_arg</function>, e
     <function>func_get_args</function>.
    </simpara>

    <simpara>
     Nenhuma sintaxe especial  requerida, e as listas de argumentos ainda 
     podem ser fornecidas explicitamente com as definies de funes e se
     comportaro normalmente.
    </simpara>

   </sect2>

  </sect1>
 
  <sect1 id="functions.returning-values">
   <title>Returnando valores</title>
 
   <para>
    Valores so retornados pelo uso de comandos opcionais de retorno. Qualquer
    tipo pode ser retornado, incluindo listas e objetos.
 
    <informalexample>
     <programlisting role="php">
function square ($num) {
    return $num * $num;
}
echo square (4);   // imprime '16'.
     </programlisting>
    </informalexample>
   </para>
      
   <para>
    Voc no pode retornar mltiplos valores a partir de uma funo, mas 
    resultados similares podem ser obtidos retornando uma lista.
 
    <informalexample>
     <programlisting role="php">
function small_numbers() {
    return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
     </programlisting>
    </informalexample>
   </para>

  </sect1>
 
  <sect1 id="functions.old-syntax">
   <title><literal>old_function</literal></title>
 
   <simpara>
    O comando <literal>old_function</literal> permite que voc declare uma 
    funo usando uma sintaxe idntica ao PHP/FI2 (exceto pelo fato de que
    voc precisa substituir 'function' com 'old_function').
   </simpara>
   <simpara>
    Esta  uma implementao obsoleta, e deve ser usada somente pelo
    conversor PHP/FI2->PHP3.
   </simpara>
   <warning>
    <para>
     Funes declaradas como <literal>old_function</literal> no podem ser chamadas
     a partir de cdigo interno do PHP. Entre outras coisas, isso significa que voc
     no pode us-las em funes como
     <function>usort</function>, <function>array_walk</function>, e
     <function>register_shutdown_function</function>. Voc pode contornar essa 
     limitao escrevendo um invlucro de funo (no formato PHP3 normal) para chamar
     o <literal>old_function</literal>.
    </para>
   </warning>

  </sect1>

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

   <para>
    O PHP suporta o conceito de funes variveis. Isto significa que se um nome de 
    varivel tem parnteses juntos como ele, o PHP procurar uma funo com o mesmo
    nome, qualquer que seja a avaliao da varivel, e tentar execut-la. Entre outras
    coisas, isto pode ser usado para implementar retornos, tabelas de funo e 
    assim por diante.
   </para>

   <para>
    <example>
     <title>Exemplo de funes variveis</title>
     <programlisting role="php">
&lt;?php
function foo() {
    echo "Em foo()&lt;br>\n";
}

function bar( $arg = '' ) {
    echo "Em bar(); argumento era '$arg'.&lt;br>\n";
}

$func = 'foo';
$func();
$func = 'bar';
$func( 'teste' );
?>
     </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:
 -->