-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathtutorial.xml
More file actions
503 lines (488 loc) · 20.6 KB
/
tutorial.xml
File metadata and controls
503 lines (488 loc) · 20.6 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
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
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 1fd637525fd3bbaec04f6fff80eeb33fce880b10 Maintainer: tpug Status: ready -->
<chapter xml:id="tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Basit bir eğitmen</title>
<para>
Bu bölümde PHP ile ilgili en temel bilgilerdan bahsedilecek,
kısa ve basit bir eğitmenden yararlanılacaktır. Bu eğitmen yalnızca PHP ile
etkileşimli site sayfaları geliştirmeyi ele alır, ancak PHP'nin yeteneği
yalnızca site sayfaları oluşturmakla sınırlı değildir. Daha fazla bilgi için
<link linkend="intro-whatcando">PHP'nin yapabildikleri</link> bölümü
incelenebilir.
</para>
<para>
PHP tarafından etkinleştirilen site sayfaları normal HTML sayfaları
gibidir ve bu sayfaları normal HTML sayfaları için kullanılan
yöntemlerle oluşturulabilir ve düzenlenebilir.
</para>
<section xml:id="tutorial.requirements">
<title>Neye ihtiyaç var?</title>
<para>
Bu eğitmen süresince HTTP sunucusunda PHP desteğinin etkinleştirilmiş
olduğu ve tüm <filename class="extension">.php</filename> uzantılı dosyaların PHP
tarafından yorumlandığı varsayılacaktır. Çoğu sunucuda, bu uzantı PHP
dosyaları için öntanımlı dosya uzantısıdır, ancak emin olmak için
sunucunun yöneticisinden doğru bilgi edinilebilir. Kullanılan sunucu
PHP'yi destekliyorsa, başka hiçbir şeye ihtiyaç yok demektir.
Yalnızca <filename class="extension">.php</filename> uzantılı dosyaları oluşturup
sunucunun belge dizinlerine koymak, sunucunun bu dosyayı otomatik
olarak işleme koyması için yeterli olacaktır. Herhangi
bir şeyi derlemek ya da fazladan bir araç kurulumu yapmak
gerekmemektedir. PHP tarafından etkinleştirilen dosyalar yeni bir tür
HTML dosyası olarak düşünülebilir. Öyle ki, artık
HTML dosyasının içine sihirli birtakım etiketler konabilir ve bu
etiketler sayesinde istenen her tür işlem gerçekleştirilebilir.
</para>
<para>
Çok değerli olan band genişliği boşa harcanmadan yerel olarak geliştirme
yapılmak isteniyor olsun. Bu durumda,
<link xlink:href="&url.apache;">Apache</link> gibi bir HTTP sunucusunun
ve elbette <link xlink:href="&url.php.downloads;">PHP</link>'nin
indirilmesi ve kurulması gerekecektir. Bu ikilinin yanında,
<link xlink:href="&url.mysql.docs;">MySQL</link> gibi bir veritabanının
da indirilip kurulması iyi olacaktır.
</para>
<para>
Bu üçlüyü tek tek kurmak yerine daha basit bir yol izlenebilir.
Bu kılavuz <link linkend="install">PHP için kurulum bilgileri</link>
(HTTP sunucunuzun halihazırda kurulu olduğunu varsayılır) bölümüne sahiptir.
PHP'yi kurmakta sorun yaşanırsa, sorunların çözümü için
<link xlink:href="&url.php.mailing-lists;">kurulum posta listesi</link>'ne
başvurulabilir. Daha basit bir yoldan gitmek istenirse, işletim
sistemine uygun olan <link xlink:href="&url.installkits;">ön
yapılandırmalı paket</link>ler seçilebilir ve tüm bu araçlar bir kaç fare
tıklamasıyla otomatik olarak yüklenebilir. MacOSX, Linux ve Windows
dahil olmak üzere birçok işletim sistemine PHP destekli bir HTTP sunucusu
kurmak oldukça kolaydır. Linux üzerinde,
<link xlink:href="&url.rpmfind;">rpmfind</link> ve
<link xlink:href="&url.rpmfind.pbone;">PBone</link> gibi araçlar RPM
dosyalarını bulmakta yardımcı olacaktır. Debian için ise
<link xlink:href="&url.apt-get;">apt-get</link> sayfası ziyaret
edilebilir.
</para>
</section>
<section xml:id="tutorial.firstpage">
<title>İlk PHP-etkin sayfa</title>
<para>
<filename>merhaba.php</filename> isimli bir dosya oluşturulup HTTP
sunucusunun belge kök dizinine (<varname>DOCUMENT_ROOT</varname>)
aşağıdaki içerikle kaydedilebilir:
</para>
<para>
<example>
<title>- İlk PHP betiği: <filename>merhaba.php</filename></title>
<programlisting role="php">
<![CDATA[
<?php
echo "Merhaba Dünya";
?>
]]>
</programlisting>
<simpara>
Tarayıcı kullanılarak HTTP sunucusunun adresine erişilebilir, bunun için
sunucu alan adının sonuna <literal>/merhaba.php</literal> eklemek
yeterli olacaktır. Yerel olarak geliştirme yaparken bu URL
<literal>http://localhost/merhaba.php</literal> veya
<literal>http://127.0.0.1/merhaba.php</literal> ya da
<literal>http://[::1]/merhaba.php</literal> gibi bir şey olacaktır,
ancak bu HTTP sunucusunun yapılandırma ayarlarına bağlıdır.
</simpara>
<simpara>
PHP normal bir HTML sayfasına gömülebilir. Bu, HTML belgesinin içine
aşağıdaki örnekte gösterildiği gibi PHP ifadelerinin yazılabileceği
anlamına gelir:
</simpara>
<programlisting role="php">
<![CDATA[
<!DOCTYPE html>
<html>
<head>
<title>PHP Denemesi</title>
</head>
<body>
<?php echo '<p>Merhaba Dünya</p>'; ?>
</body>
</html>
]]>
</programlisting>
<simpara>
Eğer her şey düzgün yapılandırılmışsa, bu dosya PHP tarafından işlenecek
ve tarayıcıya aşağıdaki çıktı gönderilecektir:
</simpara>
<screen role="html">
<![CDATA[
<html>
<head>
<title>PHP Denemesi</title>
</head>
<body>
<p>Merhaba Dünya</p>
</body>
</html>
]]>
</screen>
</example>
</para>
<para>
Bu kod gördüğünüz gibi son derece basittir ve esasında böyle bir sayfa
oluşturmak için PHP'ye gereksinim yoktur. Görüntülenen:
PHP'nin <function>echo</function> deyimi kullanılarak elde edilen
<literal>Merhaba Dünya</literal> cümlesidir. Bu dosyanın hiçbir şekilde
<emphasis>çalıştırılabilir olmasına ya da özel bir türde olmasına ihtiyaç
duyulmaz</emphasis>. Sunucu, bu dosyanın PHP tarafından
işlenmesi gerektiğini bilir, çünkü dosyaya ".php" uzantısı tanımlanmıştır.
Sunucu bu uzantıya sahip dosyaları PHP'ye aktaracak biçimde
yapılandırılmıştır. Bu dosya birtakım özel etiketlerle birçok ilginç
işlem yapılmasını sağlayan bir tür HTML dosyası olarak düşünülebilir.
</para>
<para>
Bu örnek denendiği halde hiçbir çıktı alınamazsa, dosyanın
indirilmesi istendiyse ya da dosyanın tüm içeriği metin olarak ekranda
görünüyorsa, büyük ihtimalle sunucunun PHP desteği etkinleştirilmemiştir
ya da sunucu doğru yapılandırılmamıştır. Sistem yöneticisinden kılavuzdaki
<link linkend="install">Kurulum</link> bölümünü kullanarak PHP'yi
etkinleştirmesi istenebilir. Yerel olarak geliştirme yapılıyorsa, kurulum
bölümü okunarak herşeyin doğru yapılandırılması sağlanabilir. Çıktıyı
sağlayan sunucudaki dosyaya <code>http://</code> üzerinden erişilmelidir.
Dosya <code>file://</code> üzerinden isteniyorsa, PHP tarafından
işlenmeyecektir. Sorun her şeye rağmen devam ediyorsa,
<link xlink:href="&url.php.support;">PHP desteği alma</link> yöntemleri
kullanılabilir.
</para>
<para>
Bu örneğin amacı özel PHP etiketi biçemini göstermektir. Örnekte
<literal><?php</literal> ile PHP başlangıç etiketi belirtilmektedir.
Sonra PHP komutu yazılmış ve kapanış etiketi <literal>?></literal>
kullanarak PHP kipinden çıkılmıştır. Bir HTML dosyasında bu yöntem
kullanılarak gereken yerde PHP kipine girip çıkılabilir. Daha fazla bilgi
için, kılavuzun <link linkend="language.basic-syntax">temel PHP sözdimi</link>
bölümünü okunabilir.
</para>
<note>
<info><title>Satır-sonları hakkında</title></info>
<para>
Satır-sonu karakterlerinin HTML içinde bir önemi yoktur, bununla birlikte
HTML kodunun göze hoş görünmesi için satır-sonu karakterlerini kullanmak
gerekir. <literal>?></literal> kapama etiketinin hemen ardından gelen
satır-sonu karakterini PHP silecektir. Dosyanın içine çok sayıda PHP
kodu konulması veya hiçbir şey çıktılamayan betiklerin dosyaya dahil
edilmesi durumunda bu çok işe yarar. Ancak bu biraz kafa karıştırıcı
olabilir. <literal>?></literal> kapama etiketinden sonra bir
satır-sonu karakterinin çıktılanması istenirse, ya kapama
etiketinden sonra bir boşluk bırakıp onun ardına satır-sonu karakteri
konulmalı ya da PHP kodunun son echo/print deyiminin sonuna bir satır-sonu
karakteri eklenmelidir.
</para>
</note>
<note>
<title>Metin Düzenleyiciler Hakkında</title>
<para>
PHP dosyalarını oluşturmak, düzenlemek ve yönetmek için birçok metin
düzenleyici ve Bütünleşik Geliştirme Ortamı (BGO) bulunmaktadır.
Bu araçların bir kısmı
<link xlink:href="&url.phpeditorlist;">PHP Düzenleyicileri Listesi</link>
bölümünde listelenmiştir. Önerilmesi istenen bir düzenleyici
varsa, yukarıdaki sayfayı ziyaret edilip sayfa idarecisinden
önerilmek istenen düzenleyicinin bu listeye eklemesi rica edilmelidir. Söz
dizimi vurgulaması olan bir düzenleyicinin büyük yardımı olur.
</para>
</note>
<note>
<title>Kelime İşlemciler Hakkında</title>
<para>
StarOffice Writer, Microsoft Word ve Abiword gibi kelime işlemciler PHP
dosyalarını düzenlemek için uygun değildir. Eğer bu deneme betiği
için bunlardan biri kullanılmak istenirse, dosyanın <emphasis>salt
metin</emphasis> olarak kaydedildiğinden emin olunmalıdır, aksi takdirde
PHP'nin betiği okuması ve çalıştırması mümkün olmayacaktır.
</para>
</note>
<para>
Artık çalışır bir PHP betiği başarıyla oluşturulduğuna göre, PHP
betiklerinin en ünlüsünü oluşturma zamanı geldi demektir!
<function>phpinfo</function> işlevi çalıştırılıp sistem ve
yapılandırma ilgili
<link linkend="language.variables.predefined">öntanımlı değişkenler</link>,
yüklü PHP modülleri ve <link linkend="configuration">yapılandırma</link>
ayarları gibi konularda faydalı birçok bilgiye ulaşılabilir. Bu önemli
bilgiler için biraz vakit ayrılması ve bunların incelenmesi önerilir.
</para>
<para>
<example>
<title>- PHP ile sistem bilgisine ulaşmak</title>
<programlisting role="php">
<![CDATA[
<?php phpinfo(); ?>
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="tutorial.useful">
<title>İşe yarar bir şey</title>
<para>
Bu kez kod daha işe yarar bir şey yapsın. Ziyaretçinin hangi tarayıcıyı
kullandığı tespit edilebilir. Bunun için, ziyaretçinin tarayıcısı
tarafından HTTP isteği ile birlikte gönderilen kullanıcı aracısı
dizgesine bakılır. Bu bilgi bir
<link linkend="language.variables">değişkende</link> saklanır. Değişkenler
PHP'de her zaman dolar imi ile başlar. Şu an için ilgilenilen değişken
<varname>$_SERVER['HTTP_USER_AGENT']</varname>'tir.
</para>
<note>
<para>
<varname>$_SERVER</varname> PHP kullanımına ayrılmış özel bir değişken
olup HTTP sunucusunun tüm bilgilerini içerir. Bu tür değişkenlere süper
küreseller denir. Bu konuda daha ayrıntılı bilgi <link
linkend="language.variables.superglobals">Süper Küreseller</link>
bölümünde bulunabilir.
</para>
</note>
<para>
Bu değişkenin değerinin görüntülenmesi için yapılacaklar:
</para>
<para>
<example>
<title>- Bir değişkeni (dizi öğesini) yazdırmak</title>
<programlisting role="php">
<![CDATA[
<?php echo $_SERVER['HTTP_USER_AGENT']; ?>
]]>
</programlisting>
<para>
Bu betiğin çıktısı şöyle bir dizge olabilirdi:
</para>
<screen role="html">
<![CDATA[
Mozilla/5.0 (Linux) Firefox/112.0
]]>
</screen>
</example>
</para>
<para>
PHP'de birçok farklı değişken <link linkend="language.types">türü</link>
mevcuttur. Yukardaki örnekte bir
<link linkend="language.types.array">dizi</link>ye ait bir öğe yazdırıldı.
Diziler çok daha kullanışlı olabilir.
</para>
<para>
<varname>$_SERVER</varname> PHP tarafından kullanıma otomatik
olarak sunulan bir değişkendir. Kullanım kılavuzunun
<link linkend="reserved.variables">Öntanımlı Değişkenler</link>
bölümünden tümünün listesine ulaşılabilir ya da önceki örnekte
kullanılan <function>phpinfo</function> işlevi ile üretilen çıktıya
bakarak bütün listeye ulaşılabilir.
</para>
<para>
PHP etiketinin içine birden çok PHP komutu konabilir ve tek bir echo
komutundan daha fazlasını yapan küçük kodlar oluşturulabilir.
Örneğin, ziyaretçin Firefox kullanıp kullanmadığı şöyle saptanabilir:
</para>
<para>
<example>
<title>- <link linkend="language.control-structures">Denetim yapılarının
</link> ve <link linkend="language.functions">işlevlerin</link> kullanım
örneği</title>
<programlisting role="php">
<![CDATA[
<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo 'Firefox kullanıldığı saptandı';
}
?>
]]>
</programlisting>
<para>
Bu betiğin çıktısı şöyle olabilirdi:
</para>
<screen role="html">
<![CDATA[
Firefox kullanıldığı saptandı.
]]>
</screen>
</example>
</para>
<para>
Burada birkaç yeni kavram devreye sokuldu. Örneğin, <link
linkend="control-structures.if">if</link> deyimi; C dilinde
kullanılan temel sözdizimine aşinalık varsa, bu kullanım tanıdık
gelecektir. Aksi takdirde, giriş düzeyinde bir PHP kitabı edinilmesi ve ilk
birkaç bölümünün okunması ya da kılavuzun <link linkend="langref">Dil
Başvuru Kılavuzu</link> bölümünün okunması faydalı olacaktır.
</para>
<para>
Devreye sokulan ikinci kavram, <function>str_contains</function> işlevi ile
yapılan çağrı oldu. <function>str_contains</function>, bir dizgeyi başka bir
dizgenin içinde arayan yerleşik bir PHP işlevidir. Burada
<varname>$_SERVER['HTTP_USER_AGENT']</varname> içinde (samanlık)
<literal>'Firefox'</literal> dizgesi (iğne) aranıyor. İğne samanlıkta
bulunursa &true;, aksi takdirde &false; döner.
<link linkend="control-structures.if">if</link> ifadesinin sonucu
&true; olduğu takdirde kaşlı ayraçlar arasındaki kod
çalıştırılır. Aksi takdirde kod çalıştırılmaz. <link
linkend="control-structures.if">If</link>, <link
linkend="control-structures.else">else</link> gibi denetim yapıları ile
<function>strtoupper</function> ve <function>strlen</function> gibi
işlevler kullanılarak benzer örnekler yazılabilir. İlgili her
kılavuz sayfası aynı zamanda örnekler de içermektedir. Bu işlevlerin nasıl
kullanması gerektiğinden emin olunamıyorsa, kılavuzdaki <link
linkend="about.prototypes">bir işlev tanımı nasıl okunur</link> ve <link
linkend="language.functions">PHP işlevleri</link> bölümleri
okunabilir.
</para>
<para>
Bu bir adım öteye taşınabilir ve bir PHP kodunun tam ortasındayken
bile HTML kipine nasıl girilip çıkılabileceği gösterilebilir:
</para>
<para>
<example>
<title>- HTML ve PHP kiplerini karıştırmak</title>
<programlisting role="php">
<![CDATA[
<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
?>
<h3>str_contains() false döndürmemiş olmalı</h3>
<p>Firefox kullanıldığı saptandı.</p>
<?php
} else {
?>
<h3>str_contains() false döndürmüş olmalı</h3>
<p>Firefox kullanılmadığı saptandı.</p>
<?php
}
?>
]]>
</programlisting>
<para>
Bu betikten elde edilebilecek sonuçlardan biri:
</para>
<screen role="html">
<![CDATA[
<h3>str_contains() false döndürmemiş olmalı</h3>
<p>Firefox kullanıldığı saptandı.</p>
]]>
</screen>
</example>
</para>
<para>
Bir çıktı üretmek için PHP echo komutunu kullanmak yerine, PHP kipinden
çıkıldı ve düz HTML gönderildi. Burada dikkat edilmesi gereken önemli
nokta, betiğin mantıksal akışının değişmiyor olmasıdır.
<function>str_contains</function> işlevinden edinilen sonuca göre HTML kod
çiftlerinden yalnızca biri görüntüleyiciye gönderilmektedir. Başka bir
deyişle, bu işleyiş <literal>Firefox</literal> dizgesinin bulunup
bulunmamasına bağlıdır.
</para>
</section>
<section xml:id="tutorial.forms">
<title>Form Kullanımı</title>
<para>
PHP'nin en güçlü özelliklerinden biri HTML formlarına yaklaşım
biçimidir. Bilinmesi gereken ilk önemli durum, form içindeki tüm
elemanların PHP tarafından otomatik olarak kullanılabilir olacağıdır.
PHP ile formların kullanımı ve daha ayrıntılı bilgi için <link
linkend="language.variables.external">Dış kaynaklı değişkenler</link>
bölümü okunabilir. Örnek HTML formu:
</para>
<para>
<example>
<title>- Örnek HTML formu</title>
<programlisting role="html">
<![CDATA[
<form action="action.php" method="post">
<label for="name">İsminiz:</label>
<input name="name" id="name" type="text">
<label for="age">Yaşınız:</label>
<input name="age" id="age" type="number">
<button type="submit">Gönder</button>
</form>
]]>
</programlisting>
</example>
</para>
<para>
Bu formda özel hiçbir şey yoktur. Hiçbir özel etiket içermeyen düz bir
HTML formudur. Kullanıcı formu doldurup 'Gönder' tuşuna bastığında,
<filename>action.php</filename> sayfası çağrılır. Bu dosyaya aşağıdakiler
yazılabilir:
</para>
<para>
<example>
<title>- Formdan veri yazdırmak</title>
<programlisting role="php">
<![CDATA[
Merhaba <?php echo htmlspecialchars($_POST['name']); ?>.
Siz <?php echo (int) $_POST['age']; ?> yaşındasınız.
]]>
</programlisting>
<para>
Bu betikten elde edilecek örnek çıktı:
</para>
<screen role="html">
<![CDATA[
Merhaba Ahmet. Siz 22 yaşındasınız.
]]>
</screen>
</example>
</para>
<para>
<function>htmlspecialchars</function> ve <literal>(int)</literal>
kısımları haricinde yapılan iş oldukça açıktır.
<function>htmlspecialchars</function> işlevi HTML'ye özel karakterlerin
doğru şekilde kodlandığından emin olunmasını sağlar, dolayısıyla
başkaları sayfanıza dışardan HTML etiketleri veya Javascript
yerleştiremez. Yaş alanınında ise değerin bir tamsayı olması gerektiği
bilindiğinden değerin <type>int</type> türüne <link
linkend="language.types.typecasting">dönüştürülmesiyle</link> otomatik
olarak bu alana girilmesi olası başı boş karakterlerden de kurtulmuş
olunmaktadır. Ayrıca, bunun PHP'de otomatik olarak yapılmasını
sağlamak için <link linkend="ref.filter">süzgeç</link> eklentisi de
kullanılabilirdi. <varname>$_POST['isim']</varname> değişkeni
ve <varname>$_POST['yaş']</varname> değişkenleri
PHP tarafından otomatik olarak oluşturulur. Daha önce
<varname>$_SERVER</varname> süper küresel değişkeni kullanılmıştı,
yukarıda ise tüm POST verisini içeren <varname>$_POST</varname> süper küresel
değişkeni tanıtıldı. Formda tanımlı <emphasis>yöntem</emphasis>in POST
oluşuna dikkat edilmelidir. <emphasis>GET</emphasis> yöntemi kullanılmış
olsaydı, form bilgileri <varname>$_GET</varname> süper küresel değişkenine
atanmış olacaktı. Bunların haricinde, istemciden gelen verinin hangi
kaynaktan geldiği önemli değilse <varname>$_REQUEST</varname>
süper küreseli de kullanılabilirdi. Bu değişken GET, POST ve COOKIE
verilerinin birleşiminden oluşur.
</para>
</section>
<section xml:id="tutorial.whatsnext">
<title>Sonraki adım nedir?</title>
<para>
Edinilen yeni bilgilerle kılavuzun birçok bölümünün daha kolay
anlaşılabilmesi ve okuyucunun örnek arşivinde bulunan birçok betiği
kolayca okuyabilir duruma gelmesi amaçlanmıştır.
</para>
<para>
PHP ile neler yapabileceği ile ilgili sunumlara ulaşmak için,
<link xlink:href="&url.php.talks;">&url.php.talks;</link> adresindeki PHP
Konferans Malzemeleri Sitesi ziyaret edilebilir.
</para>
</section>
</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:"~/.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
-->