1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-23 23:02:09 +01:00
Files
archived-doc-tr/language/constants.xml
2024-10-29 17:50:54 +03:00

373 lines
13 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: be039c085ee703d5b1f39837e55081d6e2d55030 Maintainer: nilgun Status: ready -->
<!-- CREDITS: tpug, sezer -->
<chapter xml:id="language.constants" xmlns="http://docbook.org/ns/docbook">
<title>Sabitler</title>
<simpara>
Bir sabit basit bir değerin betimleyicisidir (ismidir). İsminden de
anlaşılacağı gibi, betiğin çalışması sırasında bu değer değiştirilemez
(aslında birer sabit olmayan <link
linkend="language.constants.magic">sihirli sabitler</link>
hariç). Sabitler harf büyüklüğüne duyarlıdır.
Geleneksel olarak, sabit isimleri daima büyük harfle yazılır.
</simpara>
<note>
<para>
PHP 8.0.0'dan önce, <function>define</function> işlevi kullanılarak
tanımlanan sabitler harf büyüklüğüne duyarsız olabilir.
</para>
</note>
<para>
Bir sabite verilen isim PHP'de varolan diğer tüm isimlerle aynı
kurallara tabidir. Geçerli bir sabit ismi bir harfle ya da alt çizgi imi
ile başlar, herhangi bir sayıda harf, rakam ya da alt çizgi ile
devam eder. Bir sabit ismi düzenli ifade olarak, şu şekilde ifade
edilebilir:
<code>^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>
</para>
<para>
Geçersiz ismleri ve PHP kullanımına ayrılmış isimleri
<function>define</function> işlevi ile tanımlamak mümkünse de bunların
değeri sadece <function>constant</function> işlevi ile elde edilebilir.
Ancak, bu tavsiye edilmez.
</para>
&tip.userlandnaming;
<para>
<example>
<title> - Geçerli ve geçersiz sabit isimleri</title>
<programlisting role="php">
<![CDATA[
<?php
// Geçerli sabit isimleri
define("FOO", "bir şey");
define("FOO2", "başka bir şey");
define("FOO_BAR", "daha başka bir şey");
// Geçersiz sabit isimleri
define("2FOO", "bir şey");
// Bu geçerli olmasına rağmen kullanmaktan kaçınılmalıdır.
// PHP bir gün betiğinizin çalışmasını bozacak bir sihirli
// sabit kullanmaya karar verebilir.
define("__FOO__", "bir şey");
?>]]>
</programlisting>
</example>
</para>
<note>
<simpara>
Burada bir harften söz ettiğimiz zaman, ASCII a-Z, A-Z ve karakter kodu
128-255 (<literal>0x80-0xff</literal>) arasındaki bir karakterden bahsetmiş
oluyoruz.
</simpara>
</note>
<simpara>
<link linkend="language.variables.predefined">Süper küresellerde</link>
olduğu gibi, sabitlerin etki alanı da küreseldir. Sabitlere etki alanı
dikkate alınmaksızın bir komut dosyasının herhangi bir yerinden
erişilebilir."Etki alanı" hakkında daha ayrıntılı bilgi edinmek için
<link linkend="language.variables.scope">Değişken Etki Alanı</link>
bölümünü okuyunuz.
</simpara>
<note>
<simpara>
PHP 7.4.0'dan itibaren, bir sınıf sabitinin görünürlüğü protected
veya private olarak bildirebilir, bu da onları yalnızca tanımlandığı
sınıfın hiyerarşik etki alanında kullanılabilir hale getirir.
</simpara>
</note>
<sect1 xml:id="language.constants.syntax">
<title>Söz dizimi</title>
<simpara>
Bir sabit <function>define</function> işlevi veya
<literal>const</literal> anahtar sözcüğü kullanılarak tanımlanabilir.
<function>define</function> bir sabitin rastgele bir ifadede tanımlanmasına
izin verir. <literal>const</literal> anahtar sözcüğünün ise aşağıdaki
paragrafta açıklanan bazı kısıtlamaları vardır. Bir sabit tanımlandıktan
sonra asla değiştirilemez ve tanımsız yapılamaz.
</simpara>
<simpara>
<literal>const</literal> anahtar sözcüğü kullanılırken, yalnızca sayıl
(<type>bool</type>, <type>int</type>, <type>float</type> ve
<type>string</type>) ifadeler ve yalnızca sayıl ifadeler içeren sabit
dizileri kabul edilir. Sabitleri <type>resource</type> olarak tanımlamak
mümkünse de, umulmadık sonuçlara yol açabileceğinden bundan kaçınılmalıdır.
</simpara>
<simpara>
Bir sabitin değerine basitçe ismi belirtilerek erişilebilir.
Değişkenlerin aksine, sabitlerin önüne <literal>$</literal> imi
ekleme<emphasis>ME</emphasis>niz gerekir. Bir sabitin
ismi dinamik olarak belirtiliyorsa, sabitin değerini okumak
için <function>constant</function> işlevini kullanmak mümkündür.
Tanımlanmış sabitlerin tamamının bir listesini almak için,
<function>get_defined_constants</function> işlevini kullanabilirsiniz.
</simpara>
<note>
<simpara>
Sabitlerin ve (genel) değişkenlerin isim alanları farklıdır. Bu,
örneğin &true; ile <varname>$TRUE</varname> değerlerinin farklı
olabilecekleri anlamına gelir.
</simpara>
</note>
<simpara>
Tanımlanmamış bir sabit kullanırsanız, bir <classname>Error</classname>
yavrulanır. PHP 8.0.0 öncesinde, tanımsız sabitler çıplak bir kelime
dizesi olarak yorumlanır (SABIT yerine "SABIT" gibi). PHP 7.2.0 ve
sonrasında bu kullanım önerilmemekte olup böyle bir durumda bir
<constant>E_WARNING</constant> çıktılanır. PHP 7.2.0 öncesinde ise <link
linkend="ref.errorfunc">E_NOTICE</link> seviyesinde bir hata çıktılanırdı.
Ayrıca <link linkend="language.types.array.foo-bar">$foo[bar]</link>'ın
(bar bir sabit olmadıkça) neden yanlış olduğuna dair açıklamaya da bakın.
Bu durum, tanımlanmadıkları takdirde daima bir <classname>Error</classname>
yavrulayan <link linkend="language.namespaces.rules">(tamamen) nitelenmiş
sabitlere</link> uygulanmaz.
</simpara>
<note>
<simpara>
Bir sabitin atanıp atanmadığına bakmak için <function>defined</function>
işlevini kullanın.
</simpara>
</note>
<para>
<emphasis>Sabitler ve değişkenler arasındaki farklar:</emphasis>
<itemizedlist>
<listitem>
<simpara>
Bir sabit ismi <literal>$</literal> imi ile başlamaz.
</simpara>
</listitem>
<listitem>
<simpara>
Sabitler, değişken etki alanı kurallarına bağlı olmaksızın her yerde
tanımlanabilir ve her yerden erişilebilir.
</simpara>
</listitem>
<listitem>
<simpara>
Sabitler tanımlandıktan sonra yeniden tanımlanamaz ya da tanımsız
duruma getirilemez.
</simpara>
</listitem>
<listitem>
<simpara>
Bir sabit sadece sayıl değerlere veya dizilere çözümlenebilir.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
<example>
<title>- Sabitlerin Tanımlanması</title>
<programlisting role="php">
<![CDATA[
<?php
define("CONSTANT", "Merhaba dünya.");
echo CONSTANT; // "Merhaba dünya" çıktılar.
echo Constant; // Hata verir: Tanımlanmamış sabit "Constant"
// PHP 8.0.0 öncesinde. "Constant" çıktılanıp bir uyarı verilirdi.
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>- Sabitlerin <code>const</code> ile tanımlanması</title>
<programlisting role="php">
<![CDATA[
<?php
// Basit sayıl değer
const SABIT = 'Merhaba Dünya';
echo SABIT;
// Sayıl ifade
const DIGER_SABIT = SABIT.'; Elveda Dünya';
echo DIGER_SABIT;
const HAYVANLAR = array('köpek', 'kedi', 'kuş');
echo HAYVANLAR[1]; // "kedi" çıktılanır
// Sabit dizisi
define('HAYVANLAR', array(
'köpek',
'kedi',
'kuş'
));
echo HAYVANLAR[1]; // "kedi" çıktılanır
?>
]]>
</programlisting>
</example>
</para>
<note>
<para>
Sabitlerin <function>define</function> kullanılarak tanımlanmasının tersine,
<literal>const</literal> anahtar sözcüğü ile tanımlanan sabitler derleme
sırasında tanımlandıklarından en üst seviye etki alanında bildirilmiş
olmalıdır. Yani bunlar işlevlerin, döngülerin, <literal>if</literal>
deyimlerinin veya <literal>try</literal>/<literal>catch</literal>
bloklarının içinde bildirilemez.
</para>
</note>
<sect2 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="language.oop5.constants">Sınıf
Sabitleri</link></member>
</simplelist>
</para>
</sect2>
</sect1>
<sect1 xml:id="language.constants.predefined">
<title>Öntanımlı Sabitler</title>
<simpara>
PHP, çalışan her betiğe çok sayıda <link
linkend="reserved.constants">öntanımlı sabit</link> sağlar. Öte
yandan, bu sabitlerin çoğu, çeşitli eklentiler tarafından
tanımlandığından, sadece eklenti bir modül olarak veya PHP içinde
derlenmişse kullanılabilir.
</simpara>
</sect1>
<sect1 xml:id="language.constants.magic">
<title>Sihirli Sabitler</title>
<para>
Değerleri kullanıldıkları yere göre değişen dokuz sihirli sabit vardır.
Örneğin, <constant>__LINE__</constant> sabitinin değeri betiğin hangi
satırında kullanıldığına bağlıdır. Çalışma zamanında çözümlenen sırada
sabitlerin tersine "sihirli" sabitlerin tamamı derleme sırasında çözümlenir.
Bu özel sabitler büyük-küçük harf farkına duyarsızdır ve aşağıda
listelenmişlerdir:
</para>
<para>
<table>
<title>PHP'nin sihirli sabitleri</title>
<tgroup cols="2">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row xml:id="constant.line">
<entry><constant>__LINE__</constant></entry>
<entry>
Dosyada geçerli satırın numarası.
</entry>
</row>
<row xml:id="constant.file">
<entry><constant>__FILE__</constant></entry>
<entry>
Dosyanın veya sembolik bağdan çözümlenen dosyanın tam dosya yolu ve
dosya ismi. <function>include</function> işlevi ile betiğe eklenen bir
dosyanın içinde kullanıldığında betiğin ismini değil, eklenen dosyanın
ismini içerir.
</entry>
</row>
<row xml:id="constant.dir">
<entry><constant>__DIR__</constant></entry>
<entry>
Dosyanın bulurduğu dizin. Dahil edilen bir dosyanın içinde
kullanıldığında dahil edilen dosyanın dizini döner. Bu
<literal>dirname(__FILE__)</literal> işlevine eşdeğerder. Bu dizin
isminin sonuna bir kök dizin olmadıkça bir bölü imi konmaz.
</entry>
</row>
<row xml:id="constant.function">
<entry><constant>__FUNCTION__</constant></entry>
<entry>
İşlev ismi veya anonim işlevler için <literal>{closure}</literal>.
</entry>
</row>
<row xml:id="constant.class">
<entry><constant>__CLASS__</constant></entry>
<entry>
Sınıf ismi. Bildirildiği isim alanını
(<literal>Foo\Bar</literal> gibi) içerir. Kalıtsal özelliklerin içinde kullanıldığında __CLASS__, içinde kullanıldığı sınıfın ismidir.
</entry>
</row>
<row xml:id="constant.trait">
<entry><constant>__TRAIT__</constant></entry>
<entry>
Kalıtsal özellik ismi. Bildirildiği isim alanını
(<literal>Foo\Bar</literal> gibi) içerir.
</entry>
</row>
<row xml:id="constant.method">
<entry><constant>__METHOD__</constant></entry>
<entry>
Yöntem ismi.
</entry>
</row>
<row xml:id="constant.namespace">
<entry><constant>__NAMESPACE__</constant></entry>
<entry>
Geçerli isim alanının adı.
</entry>
</row>
<row xml:id="constant.coloncolonclass">
<entry><constant><replaceable>SınıfAdı</replaceable>::class</constant></entry>
<entry>
Tamamen nitelenmiş sınıf ismi.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<sect2 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="language.oop5.basic.class.class">::class</link></member>
<member><function>get_class</function></member>
<member><function>get_object_vars</function></member>
<member><function>file_exists</function></member>
<member><function>function_exists</function></member>
</simplelist>
</para>
</sect2>
</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:"~/.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
-->