mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 07:12:18 +01:00
344 lines
12 KiB
XML
344 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: ffbe6525350c91d58e1d5b7a52c46c911035c8e0 Maintainer: nilgun Status: ready -->
|
||
<sect1 xml:id="function.include" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<title>include</title>
|
||
<?phpdoc print-version-for="include"?>
|
||
<simpara>
|
||
<literal>include</literal> ifadesi belirtilen dosyayı betiğe ekler ve
|
||
içeriğini değerlendirir.
|
||
</simpara>
|
||
<simpara>
|
||
Betiğe dahil edilecek dosyalar önce belirtilen dizinde aranır, eğer bir dizin
|
||
belirtilmemişse <link linkend="ini.include-path">include_path</link>
|
||
yönergesinde belirtilen yollarda aranır. Dosya
|
||
<link linkend="ini.include-path">include_path</link> içinde yoksa
|
||
<literal>include</literal> son çare olarak çağrıcı betiğin kendi dizinine ve o
|
||
anki çalışma dizinine bakar, bulamazsa bir <constant>E_WARNING</constant>
|
||
çıktılar; <function>require</function> için bu davranış bir
|
||
<constant>E_ERROR</constant> olarak kendini gösterir.
|
||
</simpara>
|
||
<simpara>
|
||
Son <constant>E_WARNING</constant> veya <constant>E_ERROR</constant>
|
||
çıktılanmadan önce, dosyaya erişilemiyorsa, <literal>include</literal> ve
|
||
<literal>require</literal>, her ikisi de sırayla ek
|
||
<constant>E_WARNING</constant>'leri çıktılar.
|
||
</simpara>
|
||
<simpara>
|
||
Bir dizin belirtilmişse - mutlak (Windows'ta bir sürücü harfi veya
|
||
<literal>\</literal> ile başlıyorsa veya Unix sistemlerinde
|
||
<literal>/</literal> ile başlıyorsa) veya geçerli dizine göreli
|
||
(<literal>.</literal> veya <literal>..</literal> ile başlıyorsa)- <link
|
||
linkend="ini.include-path">include_path</link> yönergesine bakılmaz. Örneğin
|
||
bir dosya <literal>../</literal> ili başlıyorsa PHP çözümleyicisi dosyayı
|
||
betiğin bulunduğu dizinin üst dizininde arayacaktır.
|
||
</simpara>
|
||
<simpara>
|
||
PHP'nin dahil edilen dosyaları nasıl ele aldığı
|
||
<link linkend="ini.include-path">include_path</link> yönergesinin
|
||
açıklamasında ayrıntılı olarak anlatılmıştır.
|
||
</simpara>
|
||
<simpara>
|
||
Bir dosya bir betiğe dahil edildiğinde, bu dosyanın içerdiği kod,
|
||
dosyanın dahil edildiği satır itibariyle ana betikte geçerli olan <link
|
||
linkend="language.variables.scope">değişken uzayını</link> miras alır.
|
||
Yani, dosyanın dahil edildiği satıra kadar mevcut değişkenlerin hepsi
|
||
dahil edilen dosyanın içinde kullanılabilir olacaktır. Bunun yanında,
|
||
dahil edilen dosyada tanımlanmış işlevlerin ve sınıfların tamamı ana
|
||
betiğin genelinde tanımlanmış sayılır.
|
||
</simpara>
|
||
<para>
|
||
<example>
|
||
<title>- Basit bir <literal>include</literal> örneği</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
vars.php
|
||
<?php
|
||
|
||
$renk = 'yeşil';
|
||
$meyve = 'elma';
|
||
|
||
?>
|
||
|
||
dnm.php
|
||
<?php
|
||
|
||
echo "Bir $renk $meyve"; // -> Bir
|
||
|
||
include 'vars.php';
|
||
|
||
echo "Bir $renk $meyve"; // -> Bir yeşil elma
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<simpara>
|
||
<literal>include</literal> deyimi, bir işlevin içinde kullanılırsa dahil
|
||
edilmek istenen dosyanın içindeki tüm kodlar sanki o işlev içinde
|
||
tanımlanmış gibi çalıştırılacaktır. Bu durumda dahil edilen dosyadaki
|
||
kodlar, işlevin, dosyanın dahil edildiği noktadaki değişken uzayını
|
||
miras alacaktır. Bu kuralın istisnası dosya dahil edilmeden önce
|
||
çözümleyici tarafından işleme sokulan <link
|
||
linkend="language.constants.predefined">sihirli sabitler</link>dir.
|
||
</simpara>
|
||
<para>
|
||
<example>
|
||
<title>- İşlev içi <code>include</code> kullanımı</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
function foo()
|
||
{
|
||
global $renk;
|
||
|
||
include 'vars.php';
|
||
|
||
echo 'Bir $renk $meyve';
|
||
}
|
||
|
||
/* vars.php, foo() işlevinin etki alanındadır
|
||
* dolayısıyla $meyve bu alanın dışında
|
||
* kullanılamamaktadır. $renk ise global olarak
|
||
* tanımlandığından kullanılabilir
|
||
*/
|
||
foo(); // Bir yeşil elma
|
||
echo 'Bir $renk $meyve'; // Bir yeşil
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<simpara>
|
||
Bir dosya bir betiğe dahil edildiğinde, çözümleme işlemi PHP kipinden
|
||
çıkıp hedef dosyanın başlangıcında HTML kipine geçer ve dosyanın sonuna
|
||
kadar HTML kipinde kalır. Bu sebeple, hedef dosyanın içindeki kodlardan
|
||
PHP kodları olarak çalıştırılacaklar <link
|
||
linkend="language.basic-syntax.phpmode">PHP başlangıç ve bitiş
|
||
etiketleri</link> arasına alınmalıdır.
|
||
</simpara>
|
||
<simpara>
|
||
"<link linkend="ini.allow-url-include">URL include sarmalayıcıları</link>"
|
||
PHP'de etkinleştirilmiş ise (öntanımlı yapılandırmada etkindirler),
|
||
<literal>include</literal> deyiminde yerel dosya yolu belirtmek yerine
|
||
(HTTP ya da desteklenen başka bir sarmalayıcı üzerinden - <xref
|
||
linkend="wrappers"/> bölümününe bakınız) bir URL kullanabilirsiniz.
|
||
Hedef sunucu, hedef dosyayı PHP kodu olarak çalıştırabiliyorsa, ana
|
||
betikteki değişkenler dahil edilen dosyaya bir URL istek dizgesi olarak
|
||
HTTP GET ile aktarılabilir. Bu durum dahil edilen dosyaya ana dosyanın
|
||
değişken uzayını miras olarak bırakmaktan biraz farklı bir şeydir; betik
|
||
aslında uzak sunucuda çalıştırılıp yerel betiğe sonuçlar dahil
|
||
edilmektedir.
|
||
</simpara>
|
||
<para>
|
||
<example>
|
||
<title>- HTTP üzerinden <code>include</code></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
/* Bu örnekte mesela.dom sitesinin .php uzantılı dosyaları
|
||
* çalıştırabildiği ama .txt uzantılıları çalıştırmadığı
|
||
* varsayılmıştır. Ayrıca, buradaki 'Çalışır'ın manası
|
||
* $foo ve $bar değişkenlerinin dahil edilen dosyada kullanılabilir
|
||
* olduğudur. */
|
||
|
||
// Çalışmaz; dosya.txt dosyası mesela.dom sitesinde çalıştırılmaz
|
||
include 'http://mesela.dom/dosya.txt?foo=1&bar=2';
|
||
|
||
// Çalışmaz; yerel dosya sisteminde 'dosya.php?foo=1&bar=2'
|
||
// adında bir dosya olarak aranır.
|
||
include 'dosya.php?foo=1&bar=2';
|
||
|
||
// Çalışır.
|
||
include 'http://www.example.com/dosya.php?foo=1&bar=2';
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<warning>
|
||
<title>Güvenlik uyarısı</title>
|
||
<para>
|
||
Uzaktaki dosya uzaktaki sunucu tarafından işlenebilir (dosyanın
|
||
uzantısına ve uzaktaki sunucunun PHP çalıştırıp çalıştırmadığına bağlı
|
||
olarak). Ancak, elde edilecek çıktı yerel sunucuda çalıştırılacağından
|
||
bu işlemin sonucu mutlaka geçerli bir PHP betiği üretmek olmalıdır.
|
||
Dosyanın uzaktaki sunucuda işlenip sadece sonucun çıktılanmasını
|
||
istiyorsanız <function>readfile</function> işlevi daha iyi bir seçim
|
||
olacaktır. Aksi takdirde, uzakta çalıştırılan betiğin geçerli ve istenen
|
||
kodu üretebilmesini güvence altına alabilmek için özel bir çaba harcamak
|
||
gerekir.
|
||
</para>
|
||
</warning>
|
||
<para>
|
||
Ayrıca, bu konuyla ilgili olarak <link linkend="features.remote-files"
|
||
>Uzaktaki dosyaların kullanımı</link> belgesiyle
|
||
<function>fopen</function> ve <function>file</function> işlevlerine de
|
||
bakınız.
|
||
</para>
|
||
<simpara>
|
||
<literal>return</literal> kullanımı: <literal>include</literal> başarısız
|
||
olursa <literal>FALSE</literal> döndürür ve bir uyarı verir. Başarılı
|
||
olursa, içerildikleri dosya tarafından aksi belirtilmedikçe
|
||
<literal>1</literal> döndürür. Dahil edilen dosyanın içersinde, bu
|
||
dosyanın işlenmesi durdurmak ve dahil eden betiğe geri dönmek için
|
||
<function>return</function> kullanılabilir. Ayrıca, dahil edilen
|
||
dosyalardan değer döndürmek de mümkündür. Normal bir işlevde olduğu
|
||
gibi, <literal>include</literal> çağrısından elde edilen değeri bir
|
||
değişkene atayabilirsiniz. Ancak bu durum, uzaktaki dosyalar için,
|
||
sadece uzaktaki dosyanın çıktısı <link
|
||
linkend="language.basic-syntax.phpmode">geçerli PHP başlangıç ve bitiş
|
||
etiketlerine</link> sahipse (herhangi yerel bir dosyada olduğu gibi),
|
||
kullanılabilir. Gerekli değişkenler bu etiketlerin arasında
|
||
tanımlandığında dosyanın dahil edildiği noktadan itibaren kullanılabilir
|
||
olacaklardır.
|
||
</simpara>
|
||
<para>
|
||
<literal>include</literal> özel bir dil oluşumu olduğundan,
|
||
bağımsız değişkeninin parantez içine alınması gerekmez. Dönüş değerini
|
||
karşılaştırırken buna dikkat edin.
|
||
<example>
|
||
<title>- <code>include</code> dönüş değerinin karşılaştırılması</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// çalışmaz, include(('vars.php') == TRUE) olarak değerlendirilir,
|
||
// sonuç include('1') olur
|
||
if (include('vars.php') == TRUE) {
|
||
echo 'TAMAM';
|
||
}
|
||
|
||
// çalışır
|
||
if ((include 'vars.php') == TRUE) {
|
||
echo 'TAMAM';
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>- <code>include</code> ve <code>return</code> deyimleri</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
return.php
|
||
<?php
|
||
|
||
$var = 'PHP';
|
||
|
||
return $var;
|
||
|
||
?>
|
||
|
||
noreturn.php
|
||
<?php
|
||
|
||
$var = 'PHP';
|
||
|
||
?>
|
||
|
||
testreturns.php
|
||
<?php
|
||
|
||
$foo = include 'return.php';
|
||
|
||
echo $foo; // 'PHP' basar
|
||
|
||
$bar = include 'noreturn.php';
|
||
|
||
echo $bar; // 1 basar
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<simpara>
|
||
<literal>include</literal> işlemi başarılı olduğundan
|
||
<literal>$bar</literal>, <literal>1</literal> değerine sahiptir.
|
||
Yukarıdaki örnekler arasındaki farklara dikkat edin. Birincisi
|
||
<function>return</function> deyimini dahil edilen dosyada kullanırken
|
||
ikincisi kullanmıyor. Dosya dahil edilemediği durumda, &false;
|
||
döndürülüyor ve bir <constant>E_WARNING</constant> üretiliyor.
|
||
</simpara>
|
||
<para>
|
||
Dahil edilen dosyanın içinde tanımlanmış işlevler varsa,
|
||
<function>return</function> deyiminden önce ya da sonra olduğundan
|
||
bağımsız olarak ana betik içersinde kullanılabilirler. Dosya iki defa
|
||
dahil edilmişse, PHP ölümcül hata verir çünkü bildirilmiş işlevler
|
||
tekrar bildirilmeye calışılmış olur. Dosyanın halihazırda dahil edilip
|
||
edilmediğini kendiniz tespit edip koşula bağlı <function>return</function>
|
||
çalıştırmak yerine, <function>include_once</function> kullanmanız
|
||
önerilir.
|
||
</para>
|
||
<simpara>
|
||
Bir PHP dosyasını bir değişkene "dahil" etmenin diğer bir yolu, çıktıyı
|
||
<link linkend="ref.outcontrol">Çıktı Denetim İşlevleri</link>ni
|
||
<literal>include</literal> ile birlikte kullanarak yakalamaktır. Örnek:
|
||
</simpara>
|
||
<para>
|
||
<example>
|
||
<title>- Bir PHP dosyasını bir dizgeye dahil etmek için tampon
|
||
kullanımı</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$string = get_include_contents('somefile.php');
|
||
|
||
function get_include_contents($filename) {
|
||
if (is_file($filename)) {
|
||
ob_start();
|
||
include $filename;
|
||
return ob_get_clean();
|
||
}
|
||
return false;
|
||
}
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Betiğinize dosyaları otomatik olarak dahil etmek için, &php.ini;
|
||
içersindeki <link linkend="ini.auto-prepend-file"
|
||
>auto_prepend_file</link> ve <link linkend="ini.auto-append-file"
|
||
>auto_append_file</link> yapılandırma seçeneklerini inceleyebilirsiniz.
|
||
</para>
|
||
|
||
¬e.language-construct;
|
||
|
||
<simpara>
|
||
Ayrıca, <function>require</function>,
|
||
<function>require_once</function>, <function>include_once</function>,
|
||
<function>readfile</function>, <function>virtual</function> ve
|
||
<link linkend="ini.include-path">include_path</link>'a da bakınız.
|
||
</simpara>
|
||
</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
|
||
-->
|