1
0
mirror of https://github.com/php/doc-tr.git synced 2026-04-26 16:38:05 +02:00
Files
Sergey Panteleev fa3a1a7ec0 Sync with English
2024-05-31 17:38:57 +03:00

115 lines
3.8 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 70f392045a26b176f206013f00fa14b86440efd1 Maintainer: nilgun Status: ready -->
<sect1 xml:id="language.oop5.serialization" xmlns="http://docbook.org/ns/docbook">
<title>Oturumlardaki nesnelerin dizgeleştirilmesi</title>
<titleabbrev>Nesne Dizgeleştirme</titleabbrev>
<para>
<function>serialize</function> işlevi PHP'de saklanmış bir değerin
bayt-akımı gösterimini içeren bir dizge döndürür. Özgün değişken değerlerini
yeniden oluşturmak için <function>unserialize</function> işlevi
kullanılabilir. Bir nesneyi saklamak için dizgeleştirme kullanımı nesnenin
içindeki tüm değişkenleri saklar. Nesnenin yöntemleri saklanmaz sadece
sınıf ismi saklanır.
</para>
<para>
Bir nesne için <function>unserialize</function> kullanabilmek için sınıf
nesnesinin tanımlı olması gerekir. Yani, A sınıfının bir nesnesi varsa ve
dizgeleştirilirse, A sınıfının ismini ve içerdiği tüm değişkenlerin
değerlerini içeren bir dizge elde edilir. Başka bir dosyada bu dizge
<function>unserialize</function> ile dönüştürülmek istenirse, bu dosyada
daha önce A sınıfı tanımlanmış ve nesnesi oluşturulmuş olmalıdır.
Bu, örneğin, A sınıfının tanımı bir include dosyasında saklanıp bu
dosya betiğe dahil edilerek veya
<function>spl_autoload_register</function> işlevi kullanılarak
yapılabilir.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// A.php:
class A {
public $one = 1;
public function show_one() {
echo $this->one;
}
}
// page1.php:
include "A.php";
$a = new A;
$s = serialize($a);
// $s'i page2.php'nin bulabileceği bir yere sakla
file_put_contents('store', $s);
// page2.php:
// unserialize işlevinin düzgün çalışması için gerekli
include "A.php";
$s = file_get_contents('store');
$a = unserialize($s);
// şimdi show_one() işlevi kullanılabilir.
$a->show_one();
?>
]]>
</programlisting>
</informalexample>
<para>
Bir uygulama, uygulamada daha sonra kullanmak için nesneleri
dizgeleştiriyorsa, uygulamanın o nesnenin sınıf tanımını uygulama boyunca
içermesi şiddetle tavsiye edilir. Bunu yapmamak, bir nesnenin sınıf
tanımlaması olmaksızın nesneleştirilmesiyle sonuçlanabilir, bu da PHP'nin
nesneyi hiçbir yöntemi olmayan bir
<classname>__PHP_Incomplete_Class_Name</classname> sınıfına sokmasına
neden olur ve sonuçta nesne işe yaramaz hale gelir.
</para>
<para>
Yani, yukarıdaki örnekte, eğer <varname>$_SESSION</varname> süper küresel
dizisine yeni bir anahtar ekleyerek <varname>$a</varname> bir oturumun
parçası haline gelirse, <literal>A.php</literal> dosyası yalnız
<filename>page1.php</filename> ve <filename>page2.php</filename>
dosyalarına değil tüm sayfa dosyalarına dahil edilmelidir.
</para>
<para>
Yukarıdaki tavsiyenin ötesinde, <link linkend="object.sleep">__sleep()</link>
ve <link linkend="object.wakeup">__wakeup()</link> yöntemlerini kullanarak
da bir nesne üzerinde dizgeleştirme ve yeniden nesneleştirme yapabilir.
<link linkend="object.sleep">__sleep()</link> kullanımı ayrıca,
nesne özelliklerinin tamamının değil sadece bir kısmının dizgeleştirilmesini
de sağlar.
</para>
</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
-->