-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy patheval.xml
171 lines (162 loc) · 5.6 KB
/
eval.xml
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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 78d17c25eeecc78cb7098b1a01d42391e36af2c1 Maintainer: nilgun Status: ready -->
<refentry xml:id="function.eval" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>eval</refname>
<refpurpose>Bir dizgeyi bir PHP kodu olarak yorumlar</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>mixed</type><methodname>eval</methodname>
<methodparam><type>string</type><parameter>kod_dizgesi</parameter></methodparam>
</methodsynopsis>
<para>
<parameter>kod_dizgesi</parameter> ile belirtilen dizgeyi bir PHP kodu
olarak yorumlar.
</para>
<para>
Değerlendirilen kod, <function>eval</function> çağrısının gerçekleştiği
satırın <link linkend="language.variables.scope">değişken etki alanını</link>
devralır. Bu satırda bulunan tüm değişkenler, değerlendirilen kodda
okunabilir ve değiştirilebilir. Ancak, tanımlanan tüm işlevler ve sınıflar
genel isim alanında tanımlanacaktır. Başka bir deyişle, derleyici
değerlendirilen kodu ayrı bir <link linkend="function.include">dahil edilen</link>
dosyaymış gibi ele alır.
</para>
<caution>
<para>
<function>eval</function> dil yapısı çok tehlikelidir çünkü keyfi PHP kodunun
çalıştırılmasına izin verir. Bu nedenle kullanımı önerilmez. Bu yapıyı
kullanmaktan başka bir seçeneğin olmadığına dikkatlice karar verilirse,
önceden düzgün bir şekilde doğrulamadan kullanıcı tarafından sağlanan
herhangi bir veriyi bu işleve aktarmamaya özellikle dikkat edilmelidir.
</para>
</caution>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>kod_dizgesi</parameter></term>
<listitem>
<para>
Yorumlanacak PHP kodlarını içeren dizge.
</para>
<para>
Dizge içindeki bir <literal>return</literal> deyimi dizgenin
yorumlanmasını, anında durdurur.
</para>
<para>
Kod, PHP açılış ve kapanış
<link linkend="language.basic-syntax.phpmode">PHP etiketleri</link> ile
sarmalanmaMAlıdır, yani
<literal>'<?php echo "Merhaba!"; ?>'</literal> dizgesi yerine
<literal>'echo "Merhaba!";'</literal> dizgesi aktarılmalıdır. Uygun PHP
etiketlerini kullanarak PHP kipinden çıkmak ve yeniden girmek hala
mümkündür, örn. <literal>'echo "PHP kipindeyiz!"; ?>HTML kipindeyiz!
<?php echo "Tekrar PHP kipindeyiz!";'</literal>.
</para>
<para>
Bunun dışında aktarılan kod geçerli PHP kodu olmalıdır. Bu, tüm
ifadelerin noktalı virgül kullanılarak uygun şekilde sonlandırılması
gerektiği anlamına gelir. Örneğin <literal>'echo "Merhaba!"'</literal>
bir ayrıştırma hatasına sebep olurken,
<literal>'echo "Merhaba!";'</literal> çalışacaktır.
</para>
<para>
Bir <literal>return</literal> deyimi kodun yorumlanmasını derhal
sonlandıracaktır.
</para>
<para>
Kod, <function>eval</function> işlevini çağıran kodun etki alanında
çalıştırılacaktır. Bu nedenle <function>eval</function> çağrısında
tanımlanan veya değiştirilen tüm değişkenler, işlev sonlandırıldıktan
sonra görünür kalacaktır.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Kod dizgesi içinde bir <literal>return</literal> bulunmadıkça
<function>eval</function> daima &null; döndürür. <literal>return</literal>
ile bir değer döndürülmesi durumunda bu değeri döndürür. Belirtilen dizgede
bir çözümleme hatası saptanırsa <function>eval</function> PHP 7 öncesinde
&false; döndürüp çalışma dosyadaki sonraki deyimden normal olarak devam
eder; PHP 7 ve sonrasında ise <classname>ParseError</classname> istisnası
oluşur. <function>eval</function> işlevinin yorumladığı kodlardaki bir
hatayı <function>set_error_handler</function> kullanarak döndürmek mümkün
değildir.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>- <function>eval</function> örneği</title>
<programlisting role="php">
<![CDATA[
<?php
$dizge = 'Gülhane';
$isim = 'çınar';
$metin = 'Burası $dizge parkı ve ben bir $isim ağacıyım.';
echo $metin. "\n";
eval("\$metin = \"$metin\";");
echo $metin. "\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Burası $dizge parkı ve ben bir $isim ağacıyım.
Burası Gülhane parkı ve ben bir çınar ağacıyım.
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.language-construct;
&tip.ob-capture;
<note>
<para>
Yorumlanan kodda ölümcül bir hata varsa betiğin tamamı durdurulur.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>call_user_func</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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:"~/.phpdoc/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
-->