-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathautoload.xml
128 lines (119 loc) · 4.07 KB
/
autoload.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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ce3a2d381693ccbc10cc4a808c3eb853f3c85c9e Maintainer: nilgun Status: ready -->
<!-- CREDITS: tpug, sezer -->
<sect1 xml:id="language.oop5.autoload" xmlns="http://docbook.org/ns/docbook">
<title>Otomatik Yüklenen Sınıflar</title>
<para>
Nesne-yönelimli uygulama yazan birçok geliştirici, her bir sınıf tanımı
için ayrı bir PHP kaynak dosyası oluşturmaktadır. Bu kullanımın en can
sıkıcı noktalarından bir tanesi, betiklerin en tepesinde bir sürü dosyanın
betiğe dahil edilmesini gerektirmesidir (her bir sınıf için ayrı bir
dosya).
</para>
<para>
<function>spl_autoload_register</function> işlevi, henüz tanımlanmamışlarsa,
sınıfların ve arayüzlerin otomatik olarak yüklenmesini sağlayacak
sayıda otomatik yükleyiciyi kaydeder. Otomatik yükleyicileri
kaydederek, bir hatayla başarısızlığa uğramadan önce PHP'ye sınıf veya
arayüzü yüklemek için son bir şans verilir.
</para>
<caution>
<para>
PHP 8.0.0 öncesinde sınıf ve arayüzleri otomatik yüklemek için
<function>__autoload</function> işlevini kullanmak mümkündü. Bununla
birlikte, <function>__autoload</function> işlevi
<function>spl_autoload_register</function> işlevinin daha az esnek
benzeridir ve <function>__autoload</function> işlevinin kullanılması
PHP 7.2.0 itibariyle önerilmemekte olup PHP 8.0.0 itibariyle kullanımdan
kaldırılmıştır.
</para>
<para>
Kurucu benzeri her sınıf aynı yolla otomatik yüklenebilir. Buna sınıflar,
arayüzler, nitelikler ve sayılamalar dahildir.
</para>
</caution>
<note>
<para>
<function>spl_autoload_register</function>, birden çok otomatik yükleyiciyi
kaydetmek için bir çok kez çağrılabilir. Ancak bir otomatik yükleme
işlevinden bir istisna yavrulanması, bu işlemi kesintiye uğratır ve diğer
otomatik yükleme işlevleri çalışamaz. Bu nedenle, bir otomatik yükleme
işlevinden istisna yavrulanması kesinlikle önerilmez.
</para>
</note>
<para>
<example>
<title>- Otomatik yükleme örneği</title>
<para>
Bu örnek <literal>MyClass1</literal> ve <literal>MyClass2</literal>
sınıflarını yüklemeye çalışmaktadır. Sınıflar aynı isimli
<filename>MyClass1.php</filename> ve <filename>MyClass2.php</filename>
dosyalarının içinde yer almaktadırlar.
</para>
<programlisting role="php">
<![CDATA[
<?php
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
]]>
</programlisting>
</example>
<example>
<title>- Başka bir otomatik yükleme örneği</title>
<para>
Bu örnek <literal>DenemeA</literal> arayüzünü yüklemeye çalışır.
</para>
<programlisting role="php">
<![CDATA[
<?php
spl_autoload_register(function ($name) {
var_dump($isim);
});
class Fan implements DenemeA {
}
/*
string(5) "DenemeA"
Fatal error: Interface 'DenemeA' not found in ...
*/
?>
]]>
</programlisting>
</example>
</para>
<simplesect role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>unserialize</function></member>
<member><link linkend="ini.unserialize-callback-func">
unserialize_callback_func</link></member>
<member><link linkend="ini.unserialize-max-depth">unserialize_max_depth</link></member>
<member><function>spl_autoload_register</function></member>
<member><function>spl_autoload</function></member>
<member><function>__autoload</function></member>
</simplelist>
</simplesect>
</sect1>
<!-- 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
-->